【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又はメールにて。

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

まる。をフォローする
その他の記事はこちら
【4人に1人が盗み見被害!?】意外と知られていない、公共フリーWiFiの危険性と対策について解説
開発終了した筋電によるジェスチャー操作デバイスMyo armbandをどこまで使えるか検証してみる(2023年)
リクルートの個人事業主用Airカードを解約(退会)する方法
【最大193万の給付金付き】30代女性未経験からのWeb転職はインターネットアカデミーのMamaeduが最強である理由を解説!気になる評判も
意外と簡単!総務省の「技適未取得機器を用いた実験等の特例制度」の廃止届の提出方法

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