Đối số dòng lệnh (tham số dòng lệnh) là những giá trị khá quan trọng cho chương trình của bạn, đặc biệt khi muốn kiểm soát chương trình của bạn từ bên ngoài thay vì mã hóa những giá trị bên trong mã.
Đối số dòng lệnh là gì?
Đối số dòng lệnh là các đối số chuỗi tùy ý mà người dùng có thể cung cấp cho một chương trình khi thực thi. Các đối số được truyền thông qua hệ điều hành của chương trình và chương trình có thể sử dụng nó như input.
Để sử dụng các đối số dòng lệnh trong chương trình, phải khai báo đầy đủ trong hàm main
bao gồm hai đối số:
- Số đối số dòng lệnh
- Danh sách các đối số dòng lệnh.
Cú pháp
int main (int <số đối số dòng lệnh>, char <Danh sách các đối số dòng lệnh>)
Cách sử dụng đối số dòng lệnh
Sau đây sẽ là 2 ví dụ minh họa để có thể hiểu rõ hơn về đối số dòng lệnh.
Ví dụ 1
Khởi tạo một chương trình tên file Project là DSLD có nội dung như sau:
int main( int argc, char *argv[]) { for( i = 0; i < argc; i ++) { cout << argv[i] << ""; } return 0; }
- Bước 1: debug chương trình.
- Bước 2: về màn hình desktop ấn tổ hợp phím Windows + R để mở của sổ Run.
- Bước 3: gõ cmd chọn OK để mở cửa sổ Command Line.
- Bước 4: đưa đường dẫn chứa file DSDL.exe và nhập đối số, mỗi đối số cách nhau bằng một khoảng trắng . Ở đây, nhập
DSDL.exe
để Command line chạy file này và nhập các đối sốHello world
. Ngoài ra, cũng có thể nhậpDSDL
vì command line sẽ hiểu rằng muốn chạy file DSDL.exe.
Kết quả chương trình sẽ in ra: “DSDL.exe Hello World
”.
Lúc này số đối số sẽ là argc
bằng 3
, tương ứng với 2
đối số vừa nhập vào và tên của file .exe trong thư mục debug. Tên file DSDL.exe
chính là argv[0]
và argv[1] =”Hello”
, argv[2] = “World”
.
Ví dụ 2
Khởi tạo chương trình như sau, trong đó change(char* Str)
là hàm chuẩn hóa chuỗi thành số kiểu int
. Ở ví dụ này sẽ cộng 2 đối số lại với nhau:
int cStringToInt(char* str) { int temp = 0; int sign = 1; if (*str == '-') { sign = -1; str++; } while (*str>='0' && *str <='9') { temp *= 10; temp += (int)(*str - '0'); str++; } return temp * sign; } int main(int argc, char *argv[]) { int a = cStringToInt(argv[1]); int b = cStringToInt(argv[2]); cout << "a + b = " << a + b; return 0; }
Thao tác tương tự như ví dụ 1. Sau đó sẽ truyền vào 2 giá trị của argv[1] = 3
và argv[2] = 5
.
Kết quả chương trình: