wcout不会打印正确的单引号

时间:2019-10-29 20:33:11

标签: c++ string unicode

我很惊讶地发现std::wcout不会在字符串中打印一个正确的单引号,并且实际上它已损坏。之后,没有任何其他信息打印到控制台上。

std::wcout << L"Parents’s Name";

请注意,所讨论的字符看起来像撇号,但实际上并非如此,它被称为右单引号,其unicode值为0x2019。

如果我改用cout,它将在其位置打印错误的字符,但会打印其余的字符串。但是我正在处理unicode字符串,所以我想知道为什么wcout不起作用。

如您所见,这并不是一个特殊的/控制字符,可以是字符串的一部分。我可以做些什么才能打印出来吗?

1 个答案:

答案 0 :(得分:1)

假设操作系统为Windows,请将控制台模式设置为支持宽字符:

#include <iostream>
#include <io.h>
#include <fcntl.h>

int main(){
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"Parents’s Name";
}

输出:

Parents’s Name