【解決方法】コマンドオプションを変更するにはどうすればよいですか "アドレス" 変数として?


変数としてオプション「addr」が必要です。
今使われているのは記号…ではないでしょうか?

適切な構文は何ですか?

..ここで定義/使用されているとおり

char addr[19] = { 0 };

ba2str(&(ii+i)->bdaddr, addr);
<pre lang="text">
<pre>QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info addr" });

私が試したこと:

>QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info " + _ " addr" })

解決策 1

QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info " + _ " addr" })

アンダースコアがそこで何をしているのかわかりません。 もしかしてタイプミス?

いったいなぜそう思うのでしょうか addr 引用符で囲まれた文字列内はプログラム変数を参照しますか? 変数があった場合 info または echo あなたのプログラムでは、それらの値も文字列に置換されることを期待しますか????

引数の std::string セマンティクスが QP->start のものであると仮定すると、次を使用できるはずです

C++
QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info " + addr });

引数が C スタイルの NUL 終了文字列の場合は、次のオプションがあります。

C++
// using std::string
std::string cmdstr{"echo q  | sudo -S hcitool info ");
cmdstr.append(addr);
QP->start("/bin/sh", { "-c", cmdstr.c_str() };

//using sprintf
#include <cstdio>
char cmdstr[256]; // something big enough to not overflow
sprintf(cmdstr, "echo q  | sudo -S hcitool info %s", addr);
QP->start("/bin/sh", { "-c", cmdstr};

//using strcat
#include <cstring>
char cmdstr[256]{"echo q  | sudo -S hcitool info "};
strcat(cmdstr, addr);
QP->start("/bin/sh", { "-c", cmdstr};

//using a string-stream
#include <sstream>
std::stringstream command{"echo q  | sudo -S hcitool info "};
comand << addr;
QP->start("/bin/sh", { "-c", command.str().c_str() };

おそらく他にもあるでしょう。 QString やその仲間たちも同様の機能を提供していると思います。

コメント

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