Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с преоброзованием WCHAR 
:(
    Опции темы
knut
Дата 13.9.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Подскажите пожалуйста почему компилятор ругается в функци е wcsncat(DirecSpec, "\\*" ,3);
Код


#define _WIN32_WINNT 0x0501
#define MAX_FILE_PATH MAX_PATH

#include <windows.h>
#include <string>
#include <stdio.h>
using namespace std;

int main()
{

  WIN32_FIND_DATA FindFileData;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    DWORD dwError;
    __wchar_t DirecSpec[MAX_PATH];
        wstring Dir;
    
    printf ("Target directory is %s.\n", "D:\\");
    
    Dir = L"D:\\";
    Dir+=L"\\*";

    wcsncpy(DirecSpec,Dir.c_str(),wcslen(Dir.c_str()) + 1);
                wcsncat(DirecSpec,"\\*",3);// ----------------------error -------------------------

        hFind  = FindFirstFile(Dir.c_str(),&FindFileData);
    if(hFind == INVALID_HANDLE_VALUE)
    {
        printf("Invalid Dir",GetLastError());
        return(-1);
    }
    else
    {
        printf("The First Dir ",FindFileData.cFileName);
        while(FindNextFile(hFind,&FindFileData) != 0)
        {
            printf ("Next Dir name is %s\n", FindFileData.cFileName);
        }
        dwError = GetLastError();
        FindClose(hFind);
        if(dwError != ERROR_NO_MORE_FILES)
        {
            printf("Find next file error",dwError);
            return(-1);
        }

    }

    return 0;
}

error C2664: 'wcsncat' : cannot convert parameter 2 from 'const char [3]' to 'const wchar_t *'

почему нельзя веть char 1 byt  a WCHAR  2 byt a:)
Заранее спасибо 


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
CaptainFlint
Дата 13.9.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: нет
Всего: 23



Цитата(knut @  13.9.2006,  14:06 Найти цитируемый пост)
почему нельзя веть char 1 byt  a WCHAR  2 byt a:)

Именно поэтому и нельзя. У тебя строка, содержащая три байта: 0x5c, 0x5c, 0x2a. Именно строка, т.е. жёстко заданная, фиксированная последовательность трёх конкретных байт! А функции требуется строка WCHAR'ов - т.е. нескольких двухбайтных последовательностей. Как предлагаешь преобразовывать твои три байта, уже сидящие в памяти, в 6 байт - откуда место-то взять?
Поэтому в таких случаях строку надо заводить изначально "длинно-символьную", а именно - предварять её буковкой L.
Код
wcsncat(DirecSpec, L"\\*", 3);



--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0395 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.