我希望以相反的顺序写一个字符串,我得到cin的字符串并通过for循环从字符串长度迭代到0.问题是当我拿土耳其字符时它写错了而且1土耳其字符串增加字符串长度2 (即ömür的长度为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ö =&gt; 我得到了什么= r ?? m ??
答案 0 :(得分:1)
问题是现在,非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;
}