2015-04-24 3 views
-2
for(int i='א'; i<='ת'; i++) 
    incList.Add(wxString::Format("%c", wxT(i)); 

Я пытаюсь добавить символ Юникода в массив с помощью wxT. Я получаю эту ошибкуwxString format Unicode character

error: 'Li' was not declared in this scope 

Что вызывает ошибку, и как ее можно исправить? Благодарю.

+0

Какая линия, в которой вы получаете ошибку? –

ответ

0

wxT() предназначен для работы с строковыми литералами, а не с переменными.

Возможно, вам что-то нужно по линиям wxString::FromUTF8(chars) или wxString mystring2(chars, wxConvUTF8). Просто передача символьного массива в качестве параметра также работает, но зависит от текущей локали.

О, и в то время как мы на это ...

for(int i='א'; i<='ת'; i++) 

... обратите внимание, что использование символов за пределами базового набора символов (в основном, ASCII-7) в C++ источник реализации-. Вероятно, вы должны использовать escape-последовательности.

1

WXT() является макро определяется следующим образом:

#ifdef UNICODE 
# define wxT(x) L##x 
#else // !Unicode 
# define wxT(x) x 
#endif 

Так, конечно wxT(i) становится Li. Он должен использоваться только со строковыми литералами.

Кроме того, почему бы wxT() преобразовать int в строку? Используйте для этого itow.