я хочу написать строку в обратном порядке, я получаю строку с 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ö =>
что я получу = г ?? м ??
Проблема в том, что в настоящее время не 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;
}
Других решений пока нет …