String input và output

Output

Để đưa dữ liệu bên trong standard container của string ra màn hình console, chúng ta sử dụng đối tượng cout như cách chúng ta vẫn thường dùng, chỉ cần sử dụng tên biến của đối tượng string.

string output_string = "I'm learning C++ programming language";

cout << output_string << endl;

Input

Chúng ta có thể sử dụng đối tượng cin để nhập dữ liệu vào từ bàn phím cho những đối tượng của lớp string.

string input_string;

cout << "Please enter your command: ";

cin >> input_string;

Với cách nhập dữ liệu này, chúng ta lại gặp phải trường hợp dữ liệu truyền vào string bị dừng khi gặp kí tự khoảng trắng.

Hình 8.2. Kết quả khi nhập chuỗi có khoảng trắng bị dừng

Trong một số trường hợp, chúng ta chỉ yêu cầu người dung nhập 1 từ thì có thể sử dụng đối tượng cin như cách trên, ví dụ:

string command;

do

{

cout << "Enter \"new\" to create a new file." << endl;

cout << "Enter \"cancel\" to discard the previous behavior." << endl;

cout << "Enter \"quit\" to exit the program." << endl;

cout << "=============================================" << endl;

cout << "Enter your command: ";

cin >> command;

cout << "=============================================" << endl;

//do something depend on the command

} while (true);

Nhưng trong một số trường hợp, chúng ta cần string nhận vào kí tự khoảng trắng, ví dụ khi nhập họ tên đầy đủ, thì chúng ta cần có một cách khác.

Để khắc phục trường hợp string không nhận kí tự khoảng trắng, chúng ta sử dụng hàm getline được định nghĩa bên trong thư viện string.

string name;

cout << "Enter your full name: ";

getline( cin, name );

Mình truyền vào getline đối tượng cin để nhận dữ liệu từ bàn phím, khi cần nhận dữ liệu từ file thì mình sữ truyền vào đối số đầu tiên một đối tượng có kiểu file stream.

Bây giờ thì chúng ta có thể nhập dữ liệu mà không bị giới hạn bởi kí tự khoảng trắng này.

Hình 8.2. Kết quả nhập chuỗi có khoảng trắng thành công

Hàm getline mặc định ký tự ‘\n’ được tạo ra khi nhấn phím Enter là ký tự kết thúc nhập dữ liệu cho string. Chúng ta có thể thay đổi điều này.

Hàm getline có thể nhận them đối số thứ 3 đại diện cho ký tự kết thúc nhập dữ liệu cho string. Ví dụ:

string str;

cout << "Enter a string (end by a dot): " << endl;

getline(cin, str, '.');

cout << str << endl;

Đoạn chương trình trên khiến chương trình dừng lại và chờ cho đến khi quá trình nhập dữ liệu của bạn kết thúc, nó chỉ kết thúc khi phát hiện dấu chấm.

Hình 8.3. Kết quả nhập chuỗi kết thúc khi thấy dấu chấm

results matching ""

    No results matching ""