получить турецкие символы из строки

я хочу написать строку в обратном порядке, я получаю строку с cin и повторяю ее с помощью цикла for для длины строки до 0. Проблема заключается в том, что когда я беру турецкий символ, он пишет неправильно, а также 1 турецкий символ увеличивает длину строки на 2 (т.е. имеет длину 6)

string text = "ömür";
for ( int i = text.length() ; i >= 0; i--)
{
if(!isspace(text[i]) && text[i] != '\0')
{
cout<<text[i];
}
}

ожидаемый результат = rümö =>
что я получу = г ?? м ??

0

Решение

Проблема в том, что в настоящее время не ASCII-символы занимают более одного байта (C ++ char). Лучше всего использовать библиотеку, такую ​​как ICU это разберется с Unicode для вас. Вы могли бы тогда сделать:

#include <unicode/unistr.h>
#include <unicode/ustream.h>
#include <iostream>

int
main(int argc, char **argv)
{
icu::UnicodeString text("ömür");
text.reverse();
std::cout << text;
}
1

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

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

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