كيف يمكنني تعديل خيارات الأمر لديك "عنوان" كمتغير؟


أحتاج إلى خيار “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->start، فيجب أن تكون قادرًا على استخدامها

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

إذا كانت الوسيطات عبارة عن سلاسل منتهية بنمط NUL على النمط 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() };

ربما هناك آخرون أيضًا. أنا متأكد من أن QString والأصدقاء يقدمون تسهيلات مماثلة.

コメント

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