如何修改命令选项以具有 "地址" 作为变量?


我需要将选项“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をコピーしました