6

私はプログラミングにかなり慣れてπ(pi)いませんが、シンボルがASCII処理する出力の標準セットに含まれていないようです。

π特定の数式に関する正確な答えを表現するために、コンソールに記号を出力させる方法があるかどうか疑問に思っています。

4

3 に答える 3

3

他の方法 (STL を使用する方法など) についてはよくわかりませんが、Win32 ではWriteConsoleWを使用してこれを行うことができます。

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

DWORD dwNumberOfCharsWritten;
WriteConsoleW(hConsoleOutput, lpPiString, 1, &dwNumberOfCharsWritten, NULL);
于 2013-01-17T10:05:31.867 に答える
1

Microsoft CRT は Unicode にあまり対応していないため、バイパスしてWriteConsole()直接使用する必要がある場合があります。既に Unicode 用にコンパイルしていると仮定しています。そうでない場合は、明示的に使用する必要がありますWriteConsoleW()

于 2013-01-17T10:03:29.203 に答える
1

私はこれについて学習段階にあるので、何か間違っている場合は修正してください。

これは3段階のプロセスのようです:

  1. cout、cin、string などのワイド バージョンを使用します。つまり: wcout、wcin、wstring
  2. ストリームを使用する前に、Unicode 対応モードに設定してください。
  3. Unicode 対応のフォントを使用するように、対象のコンソールを構成します。

これで、ファンキーな音楽をロックできるはずです。

例:

#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;
}
于 2013-03-16T12:26:34.010 に答える