一尘不染

在C ++中处理UTF-8

linux

为了找出C ++是否适合我的项目,我想测试UTF-8功能。根据参考,我构建了以下示例:

#include <string>
#include <iostream>

using namespace std;

int main() {
    wstring str;
    while(getline(wcin, str)) {
        wcout << str << endl;
        if(str.empty()) break;
    }

    return 0;
}

但是,当我输入UTF-8字符时,它的行为不正确:

$ > ./utf8 
Hello
Hello
für
f
$ >

它不仅不打印ü,而且立即退出。gdb告诉我没有坠机事故,但出口正常,但是我很难相信。


阅读 470

收藏
2020-06-07

共1个答案

一尘不染

在Linux上不要使用wstring。

std :: wstring VS std ::
string

看看第一个答案。我确定它能回答您的问题。

  1. 什么时候应该在std :: string上使用std :: wstring?

在Linux上?几乎从不 (§)。

在Windows上?几乎总是 (§)。

2020-06-07