【C++/Arduino】文字列をシンプルに結合する方法

【C++/Arduino】types 'const char [5]' and 'const char*' to binary 'operator+' と出た時の対処法

事象

Arduino(cpp)で文字列を連結したいが、加算演算子(+)による結合を行うと以下エラー。

exit status 1 invalid operands of types 'const char [5]' and 'const char*' to binary 'operator+
Code language: PHP (php)

原因

const char * はC言語の文字列型であり、”文字列”という概念を配列やポインタで表現している為結合を行うことが出来ない。

解決策

①str::stringを使う

C++の文字列型である std::string を使用する。
具体的には以下。

std::string hoge = "俺は人間をやめるぞ!"; char fuga[] = {'ジョジョーー', 'ッ!!'}; hoge.append(fuga, 2); puts(hoge.c_str());//俺は人間をやめるぞ!ジョジョーーッ!!
Code language: PHP (php)

②append関数で追加

std::string型でない場合、append関数を使うだけで可能。

string hoge = "俺は人間をやめるぞ!"; string fuga = hoge.append("ジョジョーーッ!!"); cout << fuga << endl;//俺は人間をやめるぞ!ジョジョーーッ!!
Code language: JavaScript (javascript)

③snprintfに流し込む

上記のやり方が適さない場合、snprintfを使えば大体解決できる。

const char *hoge = "俺は人間をやめるぞ!", *fuga = "ジョジョーーッ!!"; //結合先の配列 char l[6]; snprintf(l, 3, "%s%s", hoge, fuga); printf("%s", l);//俺は人間をやめるぞ!ジョジョーーッ!!
Code language: JavaScript (javascript)

参考

まる。

Python歴5年のフルスタックエンジニア&ヨギー。
大学は心理学、趣味はヘルスケア全般。

最近は自作脳波デバイスとそれを使ったインタラクティブアートのチューニングに勤しみ中。
お仕事の依頼はDMもしくはメールにて。

↓アートとかの趣味アカ。よかったらみてね。٩(๑❛ᴗ❛๑)
Insta:@malmal0v0

まる。をフォローする
その他の記事はこちら
【4K60fpsキャプチャソフト】EaseUS RecExperts Pro版の機能を使ってレビューしてみた。(Windows/Mac対応)
【C++/Arduino】文字列をシンプルに結合する方法
【C++】追加の変数宣言・格納なしに効率良く文字列を追加させる方法
【C/C++】could not convert ‘xxx’ from ‘std::__cxx11::string’ {aka ‘std::__cxx11::basic_string‘} to ‘String’と出る時の解決法
【格安SIM】povo2.0にてテザリングができない時の解決法(Android)

タイトルとURLをコピーしました