質問: using namespace std; int main() { srand(time(NULL)); int n; cout << "整数値:"; cin >> n; cout << "その値の±5の乱数をせいせいしました。それは" << n - 5 + rand() % 11 << "です。\n"; } ### 試したこと コマンドプロンプトの文字コードを変えてもできませんでした。 レジストリは分からないままいじるのが怖くてできないです。 ### 補足情報(言語/FW/ツール等のバージョンなど) OS:Windows10 言語:C++ エディタ:Sublime Text3 コンパイラ:MinGW(gcc) ver4.9.3
回答: ソースコードがUTF-8、出力がCP932(WindowsでのShift_JIS)でもいいのであれば、`--exec-charset=cp932`と`--input-charset=utf-8`のオプションをつけることで可能です。 ``` $ g++ --exec-charset=cp932 --input-charset=utf-8 hoge.cpp ``` MSYS2 MINGW64 GCC 5.3.0で正常に出力できることを確認しています。 では、`--exec-charset=utf-8`にすれば出力もUTF-8になってうまくいくと思うかも知れません。その通りで、出力はちゃんとUTF-8になります(実際にテキストに出力するとちゃんとでます)。しかし、**`chcp 65001`でコマンドプロンプトをUTF-8にして実行しても一部の文字だけ正しく表示されませんでした**。回避方法は今のところ見つけられません。 もし、どうしても出力をUTF-8にしたいというのであれば、Bash on Ubuntu on Windowsを使用するという方法があります。こちらはUTF-8をUTF-8のまま解釈し、UTF-8のまま出力してくれました。果たして、そこまでしてWindowsを使い続ける意味があるのかは別ですが...。 なお、Visual C++もUTF-8のソースコードに対応していますので、そちらを使うという手もあります。確か、プロジェクトの設定で一度してしまえば、特に問題なくいけたと思いました。