Bagaimana cara mengubah opsi perintah agar dimiliki "tambahan" sebagai variabel?

pemrograman


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

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

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

Mungkin ada orang lain juga. Saya yakin QString dan kawan-kawan memberikan fasilitas serupa.

コメント

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