私のコードは次のように単純です。
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
cout<<"单元格";
return false;
}
これは私が得たものです:
エラー C2143: 構文エラー: ';' がありません 「戻る」前に。 エラー C2001: 改行は定数です。
"单元格"さらに、 「セル」のような英語版に変更すると、完全に機能します。
コンパイラ エラーは、コンパイラがソース コードで Unicode 文字をサポートしていないことを示しています。それらをエスケープし、ワイド文字定数を使用する必要がありますwcout。
wcout << L"\x5355\x5143\x683c";
特定のエンコーディング (gb2312 など) で文字を出力する必要がある場合は、文字列リテラルでそのエンコーディングを使用します。
cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
英語以外の文字セットを使用するには、次std::wcoutのようにワイド文字を印刷するために使用する必要があります
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
wcout<< L"单元格";
return false;
}
また、同じプログラムにcoutとを混在させないでください。wcout
wcout および Unicode リテラル (L"单元格") を使用します。英語の文字だけを扱っている場合でも、これは良い習慣です。wstring も使用します。
編集:実際には、ファイルを非Unicodeエンコーディングで保存しているため、文字が失われるという別の問題がある可能性があります。ファイルを Unicode として保存するようにエディターに指示します。
別の問題として、コンソール (または wcout) が Unicode 文字を正しく表示しないことがあります。メッセージ ボックス (MessageBoxW を使用) に表示すると、正しく表示されます。