Làm cách nào để sửa đổi các tùy chọn lệnh để có "địa chỉ" như biến?

lập trình


Tôi cần có tùy chọn “addr” làm biến.
Như được sử dụng bây giờ là một biểu tượng…phải không?

Cú pháp thích hợp là gì?

..as được định nghĩa/sử dụng ở đây

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

Những gì tôi đã thử:

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

Giải pháp 1

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

Tôi không chắc dấu gạch dưới đang làm gì ở đó. Có lẽ là một lỗi đánh máy?

Tại sao bạn lại nghĩ vậy addr bên trong chuỗi trích dẫn sẽ đề cập đến một biến chương trình? Nếu bạn có một biến info hoặc echo trong chương trình của bạn, bạn có mong đợi các giá trị của những giá trị đó cũng được thay thế vào chuỗi không ????

Giả sử ngữ nghĩa chuỗi std :: cho các đối số là dành cho QP-> bắt đầu, thì bạn sẽ có thể sử dụng

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

Nếu đối số của bạn là các chuỗi kết thúc NUL kiểu C, thì bạn có các tùy chọn:

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

Có lẽ còn có những người khác nữa. Tôi chắc chắn rằng QString và bạn bè cũng cung cấp các tiện ích tương tự.

コメント

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