मैं कमांड विकल्पों को कैसे संशोधित करूं? "प" परिवर्तनशील के रूप में?


मुझे वेरिएबल के रूप में विकल्प “addr” की आवश्यकता है।
जैसा कि अब प्रयोग किया जाता है एक प्रतीक है…है ना?

उचित वाक्यविन्यास क्या है?

..जैसा कि यहां परिभाषित/प्रयुक्त किया गया है

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

मैंने क्या प्रयास किया है:

>QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info " + _ " addr" })

समाधान 1

QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info " + _ " addr" })

मुझे यकीन नहीं है कि अंडरस्कोर वहां क्या कर रहा है। शायद कोई टाइपो?

आख़िर आप ऐसा क्यों सोचेंगे? addr एक उद्धृत स्ट्रिंग के अंदर एक प्रोग्राम वैरिएबल का संदर्भ होगा? यदि आपके पास एक वैरिएबल है info या echo आपके प्रोग्राम में, क्या आप उम्मीद करेंगे कि उनके मानों को भी स्ट्रिंग में प्रतिस्थापित किया जाए????

यह मानते हुए कि तर्कों के लिए std::string शब्दार्थ QP->प्रारंभ के लिए हैं, तो आपको इसका उपयोग करने में सक्षम होना चाहिए

सी++
QP->start("/bin/sh", { "-c", "echo q  | sudo -S hcitool info " + addr });

यदि आपके तर्क सी शैली एनयूएल समाप्त स्ट्रिंग हैं, तो आपके पास विकल्प हैं:

सी++
// 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() };

संभवतः अन्य लोग भी हैं. मुझे यकीन है कि QString और मित्र समान सुविधाएं प्रदान करते हैं।

コメント

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