Tôi có một chương trình nhận nhiều đối số dòng lệnh vì vậy tôi đang sử dụng getopt. Một trong các đối số của tôi có một chuỗi như một tham số. Có anyway để có được chuỗi đó thông qua các chức năng getopt hoặc tôi sẽ có để có được nó thông qua các mảng argv []? Cũng có thể getopt đọc args như -file
? Tất cả những lập luận tôi đã thấy cho đến bây giờ chỉ có một nhân vật như -a
Getopt- Thông số chuỗi truyền cho đối số
EDIT
Từ các câu trả lời dưới đây tôi đã viết một chương trình để sử dụng getopt_long(), nhưng câu lệnh switch chỉ công nhận các đối số khi Tôi sử dụng đối số ký tự chứ không phải đối số dài. Tôi không chắc tại sao điều này lại xảy ra. Khi chuyển các đối số -mf -file sample
Tôi không thấy các câu lệnh in.
EDIT
tôi đã cố gắng xâm nhập vào đối số lệnh như --file
và sau đó nó làm việc. Không thể thực hiện việc này chỉ với -file
?
static struct option long_options[] =
{
{"mf", required_argument, NULL, 'a'},
{"md", required_argument, NULL, 'b'},
{"mn", required_argument, NULL, 'c'},
{"mw", required_argument, NULL, 'd'},
{"lf", required_argument, NULL, 'e'},
{"ld", required_argument, NULL, 'f'},
{"ln", required_argument, NULL, 'g'},
{"lw", required_argument, NULL, 'h'},
{"rf", required_argument, NULL, 'i'},
{"rd", required_argument, NULL, 'j'},
{"rn", required_argument, NULL, 'k'},
{"rw", required_argument, NULL, 'l'},
{"df", required_argument, NULL, 'm'},
{"dd", required_argument, NULL, 'n'},
{"dn", required_argument, NULL, 'o'},
{"dw", required_argument, NULL, 'p'},
{"file", required_argument, NULL, 'q'},
{NULL, 0, NULL, 0}
};
int ch=0;
while ((ch = getopt_long(argc, argv, "abcdefghijklmnopq:", long_options, NULL)) != -1)
{
// check to see if a single character or long option came through
switch (ch){
case 'a':
cout<<"title";
break;
case 'b':
break;
case 'c':
break;
case 'd':
break;
case 'e':
break;
case 'f':
break;
case 'g':
break;
case 'h':
break;
case 'i':
break;
case 'j':
break;
case 'k':
break;
case 'l':
break;
case 'm':
break;
case 'n':
break;
case 'o':
break;
case 'p':
break;
case 'q':
cout<<"file";
break;
case '?':
cout<<"wrong message"
break;
}
}
Tôi đã cố gắng sử dụng getopt_long, nhưng chương trình của tôi không được công nhận các đối số. Tôi đã thêm mã của mình ở trên. – AndroidDev93
@ AndroidDev93: Kiểm tra chỉnh sửa của tôi – phoxis