[ad_1]
J’ai besoin d’avoir l’option “addr” comme variable.
Tel qu’il est utilisé maintenant, c’est un symbole… n’est-ce pas ?
Quelle est la syntaxe appropriée ?
..tel que défini / utilisé ici
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" });
Ce que j’ai essayé :
>QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + _ " addr" })
Solution 1
QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + _ " addr" })
Je ne suis pas sûr de ce que fait le trait de soulignement là-dedans. Peut-être une faute de frappe ?
Pourquoi diable penserais-tu que addr
à l’intérieur d’une chaîne entre guillemets ferait référence à une variable de programme ? Si tu avais une variable info
ou echo
dans votre programme, vous attendriez-vous à ce que les valeurs de ceux-ci soient également remplacées dans la chaîne ????
En supposant que la sémantique std::string pour les arguments est pour QP->start, alors vous devriez pouvoir utiliser
QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + addr });
Si vos arguments sont des chaînes terminées par NUL de style C, vous disposez d’options :
// 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() };
Il y en a probablement d’autres aussi. Je suis sûr que QString et ses amis proposent des fonctionnalités similaires.
[ad_2]
コメント