私は、コンソールへのwchar_t値を印刷することができますどのように?
-
21-09-2019 - |
質問
例:
#include <iostream>
using namespace std;
int main()
{
wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет"; //Russian language
cout << ru
<< endl
<< en;
return 0;
}
このコードは、アドレスのようなHEX値を印刷します。 wchar_t型の文字列を印刷する方法?
解決
編集:あなたは、デフォルトのロケールで表現できない書き込みテキストにしようとしている場合、これは動作しません。 : - (
使用std::wcout
の代わりstd::cout
ます。
wcout << ru << endl << en;
他のヒント
あなたが実際にUTF-8文字で満たされている通常のchar配列を使用し使用することができます。これは、言語間の文字を混合できるようにする必要があります。
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
cout << "\tДОБРО ПОЖАЛОВАТЬ В КИНО!\n";
}
Windowsは、非常に混乱した情報を持っています。あなたがWindowsでプログラミングする前に、UNIX / LinuxからのC / C ++の概念を学ぶ必要があります。
ワイド文字が、wprintf()またはwcout(と呼ばれる固定16ビットのメモリ・サイズであるUTF-16でwchar_tの店舗文字)UTF-16で無コンソールが出力されますので、正確に英語以外のワイド文字を印刷することはありません。 UTF-8でのUNIX / Linux意志出力しばらく現在のロケールでのWindowsの意志出力、すべてのマルチバイトです。だから、印刷前に、マルチバイトにワイド文字を変換する必要があります。 UNIXコマンドwcstombs()の代わりに)(WideCharToMultiByteを使用して、Windows上で作業をしません。
まず、メモ帳や他のエディタを使用してUTF-8にファイルを変換する必要があります。それはcygwinのは、既にUTF-8にデフォルト設定されている間、コマンドプロンプト「CHCP 65001」を入力して正しく表示するには、UTF-8にコンソールであなたの言語と変更コードページでの読み出し/書き込みができるように、コマンドプロンプトコンソールでフォントをインストール。ここで私はタイ語で何をしたかである。
#include <windows.h>
#include <stdio.h>
int main()
{
wchar_t* in=L"ทดสอบ"; // thai language
char* out=(char *)malloc(15);
WideCharToMultiByte(874, 0, in, 15, out, 15, NULL, NULL);
printf(out); // result is correctly in Thai although not neat
}
なお、 オペレーティングシステム874 =(タイ)コードページ、文字列の15 =サイズ
私の提案は、それは容易ではないので、必要でない限り、コンソールに英語以外のワイド文字を印刷しないようにすることです。
あなたは wprintf
するます。
#include <iostream>
int main()
{
wchar_t en[] = L"Hello";
wchar_t ru[] = L"Привет"; //Russian language
wprintf(en);
wprintf(ru);
return 0;
}
出力:
こんにちは
Привет
私たちは簡単な方法を探していません!
int i = 0;
while (ru[i]) {
std::cout << (char)ru[i];
i++;
}