【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+

原因

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

解決策

①str::stringを使う

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

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

②append関数で追加

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

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

③snprintfに流し込む

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

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

printf("%s", l);//俺は人間をやめるぞ!ジョジョーーッ!!

参考

まる。

━━━━━━━━━━━━━━━━━
■未経験OK!大学生インターン募集中!
プログラミングやITなど
興味ある方ご連絡ください‎。
(๑ > ﻌ <`)و✧
━━━━━━━━━━━━━━━━━
Python歴5年のフルスタックエンジニア&ヨギー。
大学は心理学専攻、趣味はヘルスケア全般。
最近は自作脳波デバイスの設計とそれを使ったインタラクティブアート生成に勤しみ中。

↓アートとか日常。
Instagram:@malmal0v0

お仕事のご依頼はDM又はメールにて。

まる。をフォローする
その他の記事はこちら
[Touchdesigner]1秒に1増加する変数をPythonで書く方法
【Touchdesigner】e-06って?値に英字が入る理由を解説
教育訓練給付金で45万円付与!4ヶ月で未経験からエンジニアを目指せるディープロ(DPro)を解説
【4人に1人が盗み見被害!?】意外と知られていない、公共フリーWiFiの危険性と対策について解説
開発終了した筋電によるジェスチャー操作デバイスMyo armbandをどこまで使えるか検証してみる(2023年)

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