【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);//俺は人間をやめるぞ!ジョジョーーッ!!

参考

まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガ(8年前にRYT200取得)やサウナ、美容EMSや電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした、生体情報の解析とインタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

日常を垂れ流すだけのアカウント
Instagram:@malmal0v0

発信を今後がんばる予定のアカウント
Youtube:https://www.youtube.com/@malmal0v0

まる。をフォローする
その他の記事はこちら
トカゲのポーズ(ウッターナ・プリシュターサナ)のやり方|効果・コツ・注意点【ヨガ】
針の糸通しのポーズ(スチランドラーサナ)のやり方|効果・コツ・注意点【ヨガ】
ウサギのポーズ(ササンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
スフィンクスのポーズ(サーランバ・ブジャンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
プランク(板のポーズ)のやり方|効果・コツ・注意点【ヨガ】

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