2010-09-15 3 views
2

Я пытаюсь вставить символ Unicode U+2022 (bullet ) в мое приложение на C++.C++ Unicode Bullet Point

Я не могу понять, как преобразовать, что U + 2022 до полукокса/строка для использования в станд :: струнной конструктор ...

char bullet = char(0x2022); 
mPassword.SetText(std::string(mText.length(), bullet)); 

Это один не работает. Надеюсь, ты поможешь!

Благодаря
opatut

+1

возможный дубликат [Как я могу вставлять строковые константы unicode в исходный файл?] (http://stackoverflow.com/questions/442735/how-can-i-embed-unicode-string-constants-in-a-source-file) –

ответ

4

символ Unicode имеет тип wchar_t (см § 2.13.4 Стандарта C++). Вы можете использовать его следующим образом:

wchar_t bullet = L'\x2022'; 

В строке это будет выглядеть:

std::wstring str_w_bullet(L"some text with \x2022"); 
+0

Следует отметить что в зависимости от вашей локали в Linux, std: строка технически t как серия UTF-8, поэтому он правильно обрабатывает unicode. Тем не менее, я понятия не имею, как вы могли бы установить любой из них индивидуально, если бы вы хотели ничего, кроме ASCII, и хотели бы установить его в коде, а не читать в том, что уже является unicode (вам, вероятно, придется выяснить, что каждый код блок вместо того, чтобы сразу установить целую кодовую точку). Однако в Windows я считаю, что вам действительно нужно использовать std :: wstring. –

+0

У меня все еще есть проблема. Я просто не получаю маркер на моем выходе. std :: wcout output quotes (") – opatut

+1

Проблема в консоли. Проверьте [this] (http://stackoverflow.com/questions/2492077/output-unicode-strings-in-windows-console-app) вопрос, если вы используете Windows. –

1

использования std::wstring, который является то, что так же, как std::string но специализируется на wchar_t

Смежные вопросы