wxStyledTextCtrl не символы ASCII

Я понял, что в wxStyledTextCtrl, если комментарии пользователя содержат символы не ASCII, позиции, сообщаемые WordStartPosition а также WordEndPosition не правы. Каков хороший способ работы с не-ASCII символами в wxStyledTextCtrl? Как я могу определить символы, которые не являются ASCII?

0

Решение

Возможно, вы уже ответили на этот вопрос, но в проведенных мною экспериментах WordStartPosition и WordEndPosition по-прежнему работают с не-ASCII-символами. Данные внутри элемента управления хранятся в формате UTF-8, и эти функции дают число байтов в тех данных, где слово начинается и заканчивается. Если это не то, что происходит с вами, вы можете опубликовать образец, где они не работают?

Что касается определения того, какие символы являются ASCII и не являются ASCII, кажется, что работает что-то вроде следующего (при условии, что a является началом, а b является конечной позицией):

wxString s = m_stc->GetTextRange(a,b);

for (wxString::const_iterator i = s.begin(); i != s.end(); ++i)
{
wxUniChar uni_ch = *i;

if(uni_ch.IsAscii())
{
//something
}
else
{
//something else
}
}

Одна вещь, которую я заметил, это то, что если вы используете значение для a или b, которое находится в середине одного из символов не-ASCII, результирующая строка будет пустой. Я надеюсь, что это поможет, если вы еще не нашли решение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]