wxStyledTextCtrl에서 사용자의 주석에 ASCII가 아닌 문자가 포함되어있는 경우 WordStartPosition
및 WordEndPosition
에 의해보고 된 위치가 잘못되었음을 알게되었습니다. wxStyledTextCtrl의 비 ASCII 문자를 처리하는 좋은 방법은 무엇입니까? 비 ASCII 문자를 어떻게 식별 할 수 있습니까?wxStyledTextCtrl ASCII가 아닌 문자
답변
아마도 지금까지이 질문에 대답했을 것입니다. 그러나 내가 한 실험에서 WordStartPosition과 WordEndPosition은 여전히 비 ASCII 문자로 작동합니다. 컨트롤의 내부 데이터는 UTF-8 형식으로 저장되며,이 함수는 단어가 시작되고 끝나는 해당 데이터의 바이트 수를 제공합니다. 그것이 당신을 위해 일어나는 일이 아니라면, 작동하지 않는 샘플을 게시 할 수 있습니까? 내가 통보했다
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
}
}
한 가지입니다 : 다음과 같이하고 ASCII되지 않는 문자 결정으로
은 (최종 총수가 시작이다 가정와 b가) 작동하는 것 같다 비 ASCII 문자 중 하나의 중간에있는 a 또는 b의 값을 사용하면 결과 문자열이 비어있는 것입니다. 이미 해결책을 찾지 못했다면 도움이되기를 바랍니다.
당신은'WordStartPosition'과'WordEndPosition'에 대해 당신이 맞습니다. 그러나 텍스트에 ASCII가 아닌 경우'GetTextRange'가 작동하지 않습니다. 'GetTextRangeRaw'는 std :: cout으로 스트리밍하는 것처럼 비 ASCII를 검사하는 더 좋은 방법 인 것처럼 보였습니다. 비 ASCII 문자를 볼 수 있습니다. – macroland
나는 최선의 접근 방식이 아니지만, 한 가지 방법은 wxCharBuffer이고 텍스트는 wxString 인 RawText의 길이를 검사하는 것입니다. wxCharBuffer에는 비 ASCII 문자를 수용하기위한 추가 문자가 포함됩니다. – macroland