qedamameのブログ

VS2017でVC++新規プロジェクト作成すると発生する文字コード関連のエラー

文字コード関連のエラー

 

自宅でC++を触ってみたときのこと。 Visual Studio2017を起動し、Visual C++Windowsコンソールアプリケーションの新規プロジェクトを作成。 ひとまず、coutでコンソールに文字列を出力してみるかと、ざざっとコードを記述。

 

#include "stdafx.h"
#include <string>
#include <iostream>

using namespace std;

int main(){

     string name = "枝豆太郎";
     cout << "名前は " << name << "です。" << endl;

     return 0;
}

 

ビルドすると……何かエラーが発生している。

「定数が2行目に続いています。」 「構文エラー:';'が○○の前に必要です。」

f:id:qedamame:20191229145532p:plain
Visual Studio 2017 ビルドエラー

これだけシンプルなソースコードに、コーディングミスがあるわけもない。

 

「ファイルをUnicode形式で保存してください。」と警告が出ているので、文字コードあたりが悪いのだとはわかる。 Visual Studio2017でファイルの文字コードを変更する方法を調べたところ、2015等は勝手が変わっていたようだった。  

エンコードして保存

 

ファイル > 名前をつけて○○を保存 を選択。 ファイル保存ダイアログの右下に、ファイルの保存方法に関するプルダウンが存在している。 「エンコード付きで保存」を選択すると、エンコードの種類の一覧が表示される。 デフォルトだと「Unicode(UTF-8 シグネチャなし)」が選択されているので、一覧の上の方へ遡り、「Unicode(UTF-8 シグネチャ付き)」を選択して上書き保存。

再度ビルドするとエラーはなく、無事デバッグ実行ができた。

 

f:id:qedamame:20191229144315p:plain
デバッグビルド結果

シグネチャはBOMのことで、BOM付きUTF-8で保存すれば動くとわかった。 今回はC++単独でしかも個人開発なのでいいのだが、やぱりUTF-8で統一したいところだ。

おまけ

  ちなみに、上記のソースコードだと文字列表示後にコンソールがすぐ閉じてしまうので、returnの前にgetchar();を追加すると、キー入力があるまでコンソールを開いたままにしてくれる。

 

以上。