[C++]charどうしを連結しようとしたら数字が返ってきた - 8月 15, 2018 こんにちは、ぐぐりら(@guglilac)です。 ```c++ std::string s("hoge"); cout << s[0]+s[1]+s[2]; ``` 的なことをしたら、なぜか数字が出力された。 想定した出力は`hog`なのに。 普通に一個だけ出力するとちゃんと文字が出力されるのに。 ```c++ cout << s[0]; ``` これだとちゃんと文字が出力される。 ## 解決 `std::string`にインデックス参照したら、charがかえってくる。 (思ったけど、charどうしの足し算って何がかえってくるつもりだったの自分。。) 結論から言うと、`char`どうし足し算すると、`char`型の変数に格納された文字に対応するASCIIコードに変換されて、その和が出力されます。 `(int) a`とやるとaに格納された文字に対応するASCIIコードを見ることができます。 ```c++ char a="a"; char b="b"; std::cout << (int)a << '\n'; std::cout << (int)b << '\n'; std::cout << a+b << '\n'; ``` ```:出力 97 98 195 ``` +演算子があると、char型は文字そのものじゃなくてコードに変換されてしまうみたい。 [char を数字として出力したい!](https://qiita.com/EqualL2/items/05dba37850e1c1aae521) 結合をするなら、charをstd::stringに変えるのがよさそうで ```c++ char a='a'; std::string s{a}; ``` とすればcharからstringに変換できる. というかstringをくっつける必要もなくて、そもそもcharをくっつけて一つのstringを作っちゃえばいいな ```c++ char a,b,c; std::string s={a,b,c}; ``` ## おわりに c++初心者、がんばるぞ この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿