2017-01-14 20 views
9

私は現在C++ 11を学んでいます。私は別の言語を使って遊びたいです。私はベトナム人ですから、ベトナム人のキャラクターを使用するC++プログラムを作りたいと思います。私はC++が<locale>を持っていることを聞いたC++でベトナム語の文字を表示する方法は?

cout << "Hello. This is English" << endl; //English 
cout << "Chào. Đây là tiếng Việt." << endl; //Vietnamese 

は、どのように私はこのようにしている、ベトナム語の文字に英語が表示されているのと同じ方法を表示することができます。ベトナム人の登場に役立つのでしょうか?

+0

あなたの質問には、どの問題が発生しているのか... – jtbandes

+0

あなたは 'wcout'などのワイド文字を見上げて/文字列 –

+0

'の#include '、'のstd ::のsetlocale(LC_ALL、 ""); '、'のstd :: wcout << L」を使用する必要があります。チャオをĐâyLà ".. ..すべてのプラットフォームで動作しますが、どのようなシステムを使用していますか?言語パックがインストールされていないと、Windowsで文字が表示されないことがあります。このコードは私のLinuxの箱の中で、たくさんのロケールがインストールされた状態でうまく動作しますが、私のBSDはそれができるものだけを表示します。なぜなら、ローカルにはインストールされていないからです... – txtechhelp

答えて

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

int main() { 
    _setmode(_fileno(stdout), _O_U16TEXT); 
    std::wcout << L"Chào. Đây là tiếng Việt."; 
} 

これは、Windowsで機能するソリューションです。残念ながら、他のプラットフォームには移植できません。

+0

これは私のシステムでは機能しませんが、それはおそらく警察の問題です。私はキャラクターを表示することはできません: 'ế'、それはあなたのために働くのですか?私のソリューションにも同じ問題があります。 – nikau6

+0

はい、正しく表示されます。代わりに何を得ますか? – ScY

+0

皮肉なことに、ほとんどの他のプラットフォームでは、ポータブルでないコードも必要ありません。 UTF8に出力を設定することはできませんか? – dascandy

6

環境に問題が発生している可能性があります。あなたは、あなたが実行しているどのようなプラットフォーム/環境と言うが、次のプログラムを取ることはありません。

#include <iostream> 
#include <cstdlib> 

int main() 
{ 
    std::cout << u8"Chào thế giới!" << std::endl; 
    return EXIT_SUCCESS; 
} 

これは、Mac OS X上のITERMから次の出力が得られます。 Chào thế giới!

他の(非でユニコード)環境では、同じコードを使用すると、出力時にASCIIとして解釈されるUTF-8文字を取得することがあります。私はWindowsのコマンドラインから何が得られるのか分かりませんが、IDEを使用している場合、IDEはUTF-8をレンダリングしても、しなくてもかまいません。

ここにウェブの例があります。

https://code.sololearn.com/c39N9RN6b4Md/#cpp利回り: Ch├áo thß║┐ giß╗¢i!

しかしhttp://ideone.com/OkkUZsまったく同じコード収量を実行している: Chào thế giới!

それは "文字" を数え、またおそらくC++で正しくUTF-8文字列を処理することを指摘する価値があります、あなたの文字列が有効なUTF-8などであることを確認してください。Unicodeライブラリを使用したいと思うかもしれません。ユニコードで作業するのは簡単ではありません。

私は、https://github.com/nemtrif/utfcppとTinyUTF8の両方を見つけました。これは、hereが優秀なライブラリであることを示しています - 合理的に小さく、シンプルで効果的です。

希望に役立ちます。

+1

Linux(Ubuntu 16.10も試しました)には、デフォルトのUTF8コンソールもあります。 – dascandy

+0

ちょうどそれがすべき方法、IMHO。 :) http://utf8everywhere.orgだから。 – U007D

関連する問題