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

まる。をフォローする
その他の記事はこちら
世界初!?はんだ用卓上リフロー炉で「リフローたこ焼き」は調理できるのか
【エンジニアのキャリアを伸ばす】tech boostの持つ、2つのコースとは?特徴やメリットを解説!【未経験からフリーランスになろう】
【ネタバレ】2024年しろたん新春福袋を購入したので中身を紹介します!【限定品は?総額いくら?】
[Touchdesigner]CHOPの波形グラフをオーバーレイ(重ねて表示)する方法
Yt-dlpにてHTTP Error 403: Forbiddenエラーが出る時の対処法【2023年】

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