[ad_1]
Saya perlu memiliki opsi “addr” sebagai variabel.
Yang digunakan sekarang adalah sebuah simbol…bukan?
Apa sintaks yang tepat?
..seperti yang didefinisikan / digunakan di sini
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" });
Apa yang saya coba:
>QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + _ " addr" })
Solusi 1
QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + _ " addr" })
Saya tidak yakin apa yang dilakukan garis bawah di sana. Mungkin salah ketik?
Kenapa kamu berpikir seperti itu addr
di dalam string yang dikutip akan merujuk ke variabel program? Jika Anda memiliki variabel info
atau echo
dalam program Anda, apakah Anda mengharapkan nilainya diganti ke dalam string juga????
Dengan asumsi std::string semantik untuk argumen adalah untuk QP->start, maka Anda harus dapat menggunakan
QP->start("/bin/sh", { "-c", "echo q | sudo -S hcitool info " + addr });
Jika argumen Anda adalah string yang diakhiri NUL gaya C, maka Anda punya opsi:
// 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() };
Mungkin ada orang lain juga. Saya yakin QString dan kawan-kawan memberikan fasilitas serupa.
[ad_2]
コメント