Я написал анализатор, который, как оказалось, работает некорректно с текстами UTF-8.
Анализатор очень очень прост:
while(pos < end) {
// find some ASCII char
if (text.at(pos) == '@') {
// Check some conditions and if the syntax is wrong...
if (...)
createDiagnostic(pos);
}
pos++;
}
Итак, вы можете видеть, что я создаю диагностикуна pos
.Но эта позиция неправильна, если было несколько символов UTF-8 (потому что символы UTF-8 в действительности состоят из более чем одного char
. Как правильно пропустить символы UTF-8, как если бы они были одним символом?
Мне это нужно, потому что диагностика отправляется в VSCode с поддержкой UTF-8.
Я пытался прочитать некоторые статьи по UTF-8 в C ++, но каждый найденный материал огромен. И мне нужно толькопропустить UTF-8.