[ad_1]
Necesito tener la opción “addr” como variable.
Tal como se usa ahora es un símbolo… ¿no es así?
¿Cuál es la sintaxis adecuada?
..como se define/utiliza aquí
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" });
Lo que he probado:
>QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + _ " addr" })
Solución 1
QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + _ " addr" })
No estoy seguro de qué hace el guión bajo allí. ¿Quizás un error tipográfico?
¿Por qué diablos pensarías eso? addr
¿Dentro de una cadena entre comillas se referiría a una variable de programa? Si tuvieras una variable info
o echo
en su programa, ¿esperaría que los valores de esos también se sustituyeran en la cadena?
Suponiendo que la semántica std::string para los argumentos es para QP->start, entonces debería poder usar
QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + addr });
Si los argumentos son cadenas terminadas en NUL estilo C, entonces tiene opciones:
// 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() };
Probablemente haya otros también. Estoy seguro de que QString y sus amigos ofrecen instalaciones similares.
[ad_2]
コメント