c++ - 在 C++ 中处理 UTF-8

标签 c++ linux stl utf-8 wstring

为了确定 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 告诉我没有崩溃,而是正常退出,但我觉得很难相信。

最佳答案

不要在 Linux 上使用 wstring。

std::wstring VS std::string

看看第一个答案。我相信它会回答您的问题。

  1. When I should use std::wstring over std::string?

On Linux? Almost never (§).

On Windows? Almost always (§).

关于c++ - 在 C++ 中处理 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513249/

相关文章:

linux - 试图创建一个文件来调用另一个文件进行循环搜索

c++ - 如何在 g++ 中使用不同的 STL

c++ - 文件输入,尝试从字符串中提取 Int (C++)

ruby - *nix 是什么意思?

c++ - input_event 结构描述(来自 linux/input.h)

linux - 是否可以从struct page中找到对应的task_struct?

C++:如何存储一组排序的元组?

c++ - 对未初始化内存使用算法的优点

c++ - 关于返回对不存在数据的引用的设计

c++ - C++ 异构集合调用派生类函数