[ad_1]
أحتاج إلى خيار “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 والأصدقاء يقدمون تسهيلات مماثلة.
[ad_2]
コメント