[ad_1]
我需要将选项“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 和朋友提供类似的设施。
[ad_2]
コメント