¿Cómo modifico las opciones de comando para tener "dirección" como variable?

programación


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

C++
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:

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() };

Probablemente haya otros también. Estoy seguro de que QString y sus amigos ofrecen instalaciones similares.

コメント

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