Простой UNICODE в C ++ - PullRequest
       12

Простой UNICODE в C ++

0 голосов
/ 06 января 2009

Есть ли способ сделать все последовательности символов UNICODE по умолчанию? Например, теперь я должен сказать:

std::wstring wstr(L"rofl");

вместо этого я бы хотел сказать

std::wstring wstr("rofl");

Спасибо!

Visual C ++ 8.0

Ответы [ 4 ]

9 голосов
/ 06 января 2009

Нет, вы должны использовать L"" для указания литерала с широкими строками.

2 голосов
/ 06 января 2009

Нет, такого нет. Многие платформы, предназначенные для компиляции с Unicode или ASCII (но не с обоими), предоставляют макросы, позволяющие легко выбирать нужный тип символов (часто используется _, например, _("text")). Вы можете использовать это, если ваша проблема компилируется для обоих вариантов. В противном случае это только дополнительный символ.

Кроме того, имейте в виду, что точная кодировка wchar_t может варьироваться от платформы к платформе. Иногда это UTF-16, иногда это UTF-32. C ++ 1x добавит явные строки, указанные в кодировке u8"string" u"string" и U"string". (Я могу ошибаться насчет префиксов, но будут такие строки).

0 голосов
/ 06 января 2009

Кроме того, CString поддерживает построение по ширине (например, CString ("text") будет работать для сборок Unicode и CString (L "text") для сборок MBCS), но все же выполняет преобразование в обоих случаях. Это может выполнить то, что вы хотите, за счет производительности.

Я бы предложил привыкнуть к использованию _T ("текст"), поскольку это, как правило, то, что вы хотите.

0 голосов
/ 06 января 2009

Меня это удивило: разве у wstring нет конструктора wstring (const char *) ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...