c++ - 是否可以在 Linux 和 Windows 上计算 EM DASH?

标签 c++ unicode cout

<分区>

我一直没能找到 cout 的方法一个 '-' 字符,我是否将它放在 cout 语句中,如下所示:cout << "—";或使用 char(151) ,程序打印出一个模糊的未定义字符。你们看到我的代码有什么问题吗?是cout甚至可能创建 EM DASH?

编辑:我也试过 wcout << L"—";std::wcout << wchar_t(0x2014); .这些都在我的终端上什么都不打印。

最佳答案

首先,EM DASH 是一个 unicode 字符(只要确保您知道这一点)。

打印 unicode 字符取决于您打印的内容。 如果您正在打印到 Unix 终端(或模拟器),终端模拟器正在使用支持此字符的编码,并且该编码与编译器的执行编码相匹配,那么您可以在源代码 cout << "—"; 中执行上面的操作

如果您收到模糊的未定义字符,可能是您的终端不支持该字符。

如果你在 windows 中(那里比较难),你可以做这样的事情(这是不可移植的):

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

int main() {
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"—";
}

关于c++ - 是否可以在 Linux 和 Windows 上计算 EM DASH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33029906/

相关文章:

c++ - 关于链接/加载和模拟器的问题

python - 在 csv dictwriter 中将 dict 值从 unicode 转换为 utf-8(或 ascii)

java - 使用java从unicode解码字符

c++ - 由于某种原因,在输入 cin 文本后,cout 显示为空白。有任何想法吗?

c++ - cout表达式中的增量地址呈现意外的输出

c++ - cout 不一致地打印字符串和变量值,使输出不对齐

c++ - ifstream eof 循环读入条件表达式中的变量?

c++ - 如何在 Windows 上编译 OpenSSL?

c++ - 使用 boost spirit x3 编译时间

matlab - MATLAB 的 Unicode 路径