输出的unicode符号π和≈在C ++ Win32控制台应用程序(Output unicode s

2019-07-18 08:39发布

我是相当新的编程,但它似乎像π(pi)符号不标准的集合,输出ASCII处理。

我想知道如果有一种方式来获得控制台输出π符号,以表达对某些数学公式确切的答案。

Answer 1:

我真的不知道任何其他方法(如那些使用STL),但你可以使用Win32做到这一点WriteConsoleW :

HANDLE hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
LPCWSTR lpPiString = L"\u03C0";

DWORD dwNumberOfCharsWritten;
WriteConsoleW(hConsoleOutput, lpPiString, 1, &dwNumberOfCharsWritten, NULL);


Answer 2:

微软CRT是不是很Unicode的,所以它可能需要绕过它,使用WriteConsole()直接。 我假设你已经编译Unicode的,否则你必须明确地使用WriteConsoleW()



Answer 3:

我在这个学习阶段,所以纠正我,如果我得到了什么。

看起来这是一个三个步骤的过程:

  1. 使用COUT,CIN,字符串等的广泛的版本。 所以:wcout,WCIN,wstring的
  2. 使用流之前,将其设置为Unicode的友好模式。
  3. 配置目标控制台使用Unicode的字体。

您现在应该能够动摇那些时髦AAOS。

例:

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

// We only need one mode definition in this example, but it and several other
// reside in the header file fcntl.h.

#define _O_WTEXT        0x10000 /* file mode is UTF16 (translated) */
// Possibly useful if we want UTF-8
//#define _O_U8TEXT       0x40000 /* file mode is UTF8  no BOM (translated) */ 

void main(void)
{
    // To be able to write UFT-16 to stdout.
    _setmode(_fileno(stdout), _O_WTEXT);
    // To be able to read UTF-16 from stdin.
    _setmode(_fileno(stdin), _O_WTEXT);

    wchar_t* hallå = L"Hallå, värld!";

    std::wcout << hallå << std::endl;

      // It's all Greek to me. Go UU!
    std::wstring etabetapi = L"η β π";

    std::wcout << etabetapi << std::endl;

    std::wstring myInput;

    std::wcin >> myInput;

    std:: wcout << myInput << L" has " << myInput.length() << L" characters." << std::endl;

    // This character won't show using Consolas or Lucida Console
    std::wcout << L"♔" << std::endl;
}


文章来源: Output unicode symbol π and ≈ in c++ win32 console application