如何从西里尔字符串c ++中获取一个字符

时间:2015-03-04 08:44:40

标签: c++

我有西里尔字的字符串。我需要收到一封信。 我只是这样找到了:

wstring line;
wifstream myfile (".../outfile.txt");
if (myfile.is_open())
{
    while (myfile.good())
    {
        getline (myfile,line);
        wstring a = line.substr(0,2); // this gives one first letter
       //....
    }
    myfile.close();
}

有没有更好的方法来收取西里尔字母的来信?

1 个答案:

答案 0 :(得分:0)

如果西里尔文使用UTF-16编码的代理对,而不是这样做:

wstring a = line.substr(0,2);

你可能想考虑做类似的事情:

const wchar_t surrogate[] = { line[0], line[1], L'\0' };
const wchar_t non_surrogate[] = { line[0], L'\0' };
const wstring a = IS_SURROGATE_PAIR(surrogate[0], surrogate[1]) ?
                  surrogate :
                  non_surrogate; 

IS_SURROGATE_PAIR宏适用于Windows - 如果您在其他地方,可以通过阅读宏链接及其随附的Surrogates and Supplementary Characters文档来自行检查。