Error C2001:定数が 2 行目に続いています。

提供:yonewiki

概要

 Visual Studioのデフォルトのテキスト編集が文字コードがSJISだから発生するエラーのようです。QtはSJISかUTF系か自動判定する仕組みがあって、リテラルに指定されている日本語文字コードを変換するあるらしいのですが、UTF系なのにSJISと判定してしまうパターンがあるらしく、そうすると終わりのダブルクォーテションが見つけられない状態に陥ったりします。日本語が使われたときにずれる。UTF-8は英語は1バイト、日本語は3バイトという感じです。


 ここで、議論?もめている?のも、そのパターンの応酬によるものです。自分も質問者側の立場だったので、もし誰かに相談していたら、同じようにあしらわれていたのかもしれません。


 上記の質問者は、VisualStudio側の設定でなんとかならないのか、といっていますが、今回のはプログラムが書かれたテキスト形式をBOM付UTF-8に変換するのが答えで、次から、新しくつくるときはUTF-8のBOM付っていうのにできれば解決だったんじゃないかなって思います。


 解決してることになっているようなので、ここで横やりをいれるだけですが、そのUTF-8がデフォルトの文字コードになるようにしてみたいと思います。ちな、これをUTF-8にしてもVisualStudioの処理系はShift-JISとして変換して、処理するらしいです。らしいって…しらべてないことだらけ。


プログラムの作成をBOM付UTF-8で固定にする。

 Visual Studio 2019の場合はデフォルトでUTF-8になっているようです。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCProjectItemsにある2つのファイル

  • newc++file.cpp
  • hfile.h


をサクラエディタのような文字コード変換機能付きのテキストエディタで、変換して保存するのがよいでしょう。上記ファイルをマイドキュメントに一度コピーして、サクラエディタで開きます。そして、名前をつけて保存を行うとダイアログが表示されるので、文字コードがUTF-8になっているのを確認して、BOM付きにチェックをいれて、名前の欄は変えず結局は同じ名前で保存します。これを2ファイル分やります。ヘッダファイルはもともとの中身があるので、勝手に手順をはしょって空のテキストにしないように気を付けてください。そしたらファイルをまたコピーします。管理者権限でコピーするかと再確認されると思いますが、OKの方向で選択しましょう。


 この変更で、今後のプログラミングにマイナスになることはないと思います。上記の問題は解決できるはずです。