从字符串中获取土耳其字符

时间:2017-12-08 12:43:13

标签: c++ localization turkish

我希望以相反的顺序写一个字符串,我得到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 ??

1 个答案:

答案 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;
}