Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (23.01.2012 в 18:34)
Вообще по стандарту C++ да, все именно так. Другое дело, что если вы пользуетесь Visual Studio, то у вас есть возможность писать обобщенный код, который позволит в случае чего откомпилировать проект и под однобайтовую кодировку, и под юникод. Для этого вместо wchar_t и char следует использовать TCHAR, а вместо L использовать один из макросов _T, TEXT или _TEXT
TCHAR unistr[] = _T("А чего захотите, то и будет");
TCHAR unistr[] = _TEXT("А чего захотите, то и будет");
TCHAR unistr[] = TEXT("А чего захотите, то и будет");
Если проект определен как Unicode-проект, то вместо TCHAR подставится wchar_t, а вместо _T - L. Если же проект определен как ASCII, то вместо TCHAR подставится char, а вместо _T ничего не подставится.
Аналогично с другими функциями, особенно, WinAPI, все они на самом деле имеют суффикс A (ASCII) или W (Unicode), который определяет в какой форме функция принимает и возвращает параметры, однако, на деле вы используете функцию без префикса, а выбор в пользу той или иной функции осуществляется в зависимости от выбора типа проекта. Но если WinAPI - это детище Microsoft, оно как хочет может его переделать, то стандарт переделать нельзя, поэтому для стандартных функций вроде main() или C-функций для работы со строками ввели аналоги, начинающиеся с символов подчеркивания - они тоже заменяются в зависимости от выбора однобайтового или многобайтового набора символов.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: