wcout不会打印正确的单引号

wcout will not print right single quotation mark

本文关键字:单引号 打印 wcout      更新时间:2023-10-16

我很惊讶地发现std::wcout不会在字符串中打印右单引号,事实上它会崩溃。此后,不会将其他内容打印到控制台。

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

请注意,有问题的字符看起来像撇号,但事实并非如此,它被称为右单引号,其unicode值为0x2019。

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

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

假设操作系统是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