2

私のコードは次のように単純です。

#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
    cout<<"单元格";
    return false;
}

これは私が得たものです:

エラー C2143: 構文エラー: ';' がありません 「戻る」前に。
エラー C2001: 改行は定数です。

"单元格"さらに、 「セル」のような英語版に変更すると、完全に機能します。

4

4 に答える 4

5

コンパイラ エラーは、コンパイラがソース コードで Unicode 文字をサポートしていないことを示しています。それらをエスケープし、ワイド文字定数を使用する必要がありますwcout

wcout << L"\x5355\x5143\x683c";

特定のエンコーディング (gb2312 など) で文字を出力する必要がある場合は、文字列リテラルでそのエンコーディングを使用します。

cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
于 2012-09-18T01:07:57.237 に答える
1

英語以外の文字セットを使用するには、次std::wcoutのようにワイド文字を印刷するために使用する必要があります

#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
  wcout<< L"单元格";
  return false;
}

また、同じプログラムにcoutとを混在させないでください。wcout

于 2012-09-18T01:06:05.070 に答える
0

wcout および Unicode リテラル (L"单元格") を使用します。英語の文字だけを扱っている場合でも、これは良い習慣です。wstring も使用します。

編集:実際には、ファイルを非Unicodeエンコーディングで保存しているため、文字が失われるという別の問題がある可能性があります。ファイルを Unicode として保存するようにエディターに指示します。

別の問題として、コンソール (または wcout) が Unicode 文字を正しく表示しないことがあります。メッセージ ボックス (MessageBoxW を使用) に表示すると、正しく表示されます。

于 2012-09-18T01:08:29.467 に答える