打印到Windows控制台度(°)和立方体符号(³)

时间:2017-11-21 11:06:40

标签: c++ windows console cout

我正在开发一个c ++ windows控制台程序,我需要打印度(°)和立方体符号(³)。

关于°的信息很多,唯一对我有用的方法是:

cout << value << "\370 C" << endl;

现在,这是什么术语? ³我需要同样的东西。 我读过某个地方\ 370是八进制代码,但我找不到任何相关的图表,或者用³的任何等价物。

2 个答案:

答案 0 :(得分:1)

让您的生活更轻松,并使用Unicode。使用Unicode,您不需要显式编码非ASCII字符,只需将它们按原样包含在源中即可。这也使您的程序独立于控制台的代码页,在另一个国家/地区可能会有所不同。

需要的步骤:

  • 以Unicode编码保存您的源文件(UTF-8运行良好,UTF-16也可以,但某些版本控制软件与后者有问题。)
  • 在您的计划开始时,请致电_setmode(_fileno(stdout), _O_U16TEXT)一次。这会将标准输出切换为UTF-16编码。 UTF-16是首选的Windows编码,因为操作系统在内部使用它,因此不会产生任何转换开销。
  • 到处使用std::wcout代替std::cout。切勿混合使用。
  • 始终通过L前缀使用广角(UTF-16)string literals
  • 确保选择实际包含这些符号的控制台字体(很可能因为这些符号很常见)。

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

int wmain(int argc, wchar_t* argv[])
{
    // Switch stdout encoding to UTF-16.
    _setmode(_fileno(stdout), _O_U16TEXT);

    // Output UTF-16 string literal.
    std::wcout << L"°³" << std::endl;
}

答案 1 :(得分:0)

您可以尝试类似

的内容
cout << value << (char)176 << " C" << endl;

将解析为char的数字作为ascii符号的十进制表示。

³应该是十六进制的0xB3,十进制的179

更多信息,请游艇this