Giới thiệu
Trong bài viết này, chúng ta sẽ tìm hiểu về quá trình Nhập, Xuất và Định dạng dữ liệu trong C++. Chúng ta sẽ khám phá những khái niệm căn bản và cách thức thực hiện các thao tác này.
Nội dung
Để hiểu bài viết này tốt hơn, hãy nắm vững kiến thức cơ bản về các phần sau:
- Biến trong C++ (Variables)
- Các kiểu dữ liệu cơ bản trong C++ (Integer, Floating point, Character, Boolean)
Trong bài viết này, chúng ta sẽ cùng đi vào chi tiết về các vấn đề sau:
- Xuất dữ liệu với std::cout trong C++
- Xuất dữ liệu với std::cin trong C++
- Định dạng dữ liệu nhập xuất trong C++
Xuất dữ liệu với std::cout trong C++
Đối tượng std::cout
là một đối tượng được định nghĩa trong thư viện iostream
thuộc namespace std
. Đối tượng này được sử dụng để hiển thị thông tin ra thiết bị xuất chuẩn, thường là màn hình. Toán tử <<
(insertion operator) được dùng để xác định hướng đi của dữ liệu từ r-value đến màn hình console.
Với std::cout
, chúng ta có thể sử dụng toán tử <<
nhiều lần để in nhiều thông tin trên cùng một dòng. Ví dụ:
#include
using namespace std;
int main() {
cout << "Hello HowKteam.com" << endl; // In lên màn hình dòng chữ "Hello HowKteam.com"
return 0;
}
Newline ‘n’ và std::endl
Một số bạn có thể đặt câu hỏi về sự khác nhau giữa đối tượng std::endl
và escape sequence ‘n’. Dưới đây là sự khác nhau giữa hai cách sử dụng này:
std::cout << "HowKteam.com" << std::endl;
std::cout << "Free educationn";
Mặc dù hai cách này trông giống nhau từ kết quả xuất ra, nhưng thực tế chúng khác nhau.
Đối tượng std::endl
được sử dụng để xóa output buffer mỗi khi được gọi, trong khi escape sequence ‘n’ không thực hiện việc này.
Giữa std::endl
và ‘n’, chúng ta nên sử dụng std::endl
khi cần đảm bảo output của chúng ta xuất hiện ngay lập tức. Tuy nhiên, chúng ta nên hạn chế sử dụng std::endl
khi làm việc với file I/O để tránh việc phải flush buffer liên tục, làm giảm hiệu suất.
Nhập dữ liệu với std::cin trong C++
Đối tượng std::cin
là một đối tượng được định nghĩa trong thư viện iostream
thuộc namespace std
. Đối tượng này được sử dụng để đọc thông tin từ thiết bị nhập chuẩn, thường là bàn phím, và lưu thông tin đó vào một biến. Toán tử >>
(extraction operator) được dùng để xác định hướng đi của dữ liệu từ màn hình console vào một biến.
Dưới đây là ví dụ về một chương trình yêu cầu người dùng nhập một số, sau đó xuất số vừa nhập ra màn hình:
#include
using namespace std;
int main() {
int n{ 0 };
cout << "Enter your age: ";
cin >> n;
cout << "Your age: " << n << endl;
return 0;
}
Trong chương trình trên, nếu bạn nhập vào một số thực, C++ sẽ ép kiểu ngầm định số thực vừa nhập về số nguyên, tức là phần thập phân sẽ bị mất đi.
Định dạng dữ liệu nhập xuất trong C++
Trong C++, chúng ta có thể định dạng dữ liệu nhập xuất cho thiết bị nhập xuất chuẩn (bàn phím, màn hình console), hoặc cho file văn bản.
Để định dạng dữ liệu, chúng ta cần thêm chỉ thị #include
vào đầu chương trình. Thư viện này chứa các toán tử định dạng (manipulator) để thực hiện các công việc liên quan đến định dạng.
Dưới đây là những manipulator khá thông dụng trong C++:
- Toán tử
std::setw(n)
xác định độ rộng dành cho dữ liệu xuất. Khi sử dụngstd::setw(n)
, các khoảng trắng sẽ được thêm vào bên trái hoặc bên phải dữ liệu xuất (tổng số ký tự là n). Dữ liệu khi in ra sẽ được canh trái hoặc canh phải. - Toán tử
std::left
vàstd::right
được dùng chung vớistd::setw(n)
để canh lề trái hoặc lề phải. - Toán tử
std::setfill(ch)
dùng chung vớistd::setw(n)
để quy định ký tự ch được thêm vào thay vì dùng khoảng trắng mặc định. Ví dụ: nếu dùngstd::setfill(‘-’)
thì dấu ‘-‘ sẽ được thay cho khoảng trắng.
Dưới đây là ví dụ minh họa về cách sử dụng manipulator:
#include
#include // for std::setw(n), std::setfill(ch), std::left, std::right
using namespace std;
int main() {
cout << "Kteam Solutions and Entertainment" << endl;
cout << "HowKteam.com" << endl << endl;
cout << setw(5) << left << "ID";
cout << setw(30) << left << "Name";
cout << setw(20) << right << "Address" << endl;
cout << setfill('-');
cout << setw(55) << "-" << endl;
cout << setfill(' ');
cout << setw(5) << left << 1;
cout << setw(30) << left << "Nguyen Doan Ngoc Giau";
cout << setw(20) << right << "Sai Gon" << endl;
cout << setw(5) << left << 2;
cout << setw(30) << left << "Tran Kim Long";
cout << setw(20) << right << "Da Lat" << endl;
cout << setw(5) << left << 3;
cout << setw(30) << left << "Nguyen Son Tung";
cout << setw(20) << right << "Dong Nai" << endl;
return 0;
}
Chúng ta cũng có thể sử dụng các manipulator khác để định dạng dữ liệu. Ví dụ: toán tử std::dec
, std::oct
, std::hex
quy định số nguyên khi nhập xuất theo dạng thập phân, bát phân, hay thập lục phân.
Dưới đây là một ví dụ minh họa:
#include
#include // for std::hex, std::oct, std::dec
using namespace std;
int main() {
int n;
cout << "Enter n (hexadecimal): ";
cin >> hex >> n; // Nhập số thập lục phân (hệ 16)
cout << "Octal: " << oct << n << endl; // Xuất số bát phân (hệ 8)
cout << "Decimal: " << dec << n << endl; // Xuất số thập phân (hệ 10)
return 0;
}
Kết luận
Qua bài viết này, chúng ta đã nắm được quá trình Nhập, Xuất và Định dạng dữ liệu trong C++. Chúng ta đã cùng tìm hiểu các kỹ thuật và kinh nghiệm liên quan đến việc nhập và xuất dữ liệu trong C++.
Trong bài viết tiếp theo, chúng ta sẽ học về một khái niệm mới có liên quan đến biến (variables) và rất quan trọng trong lập trình, đó là: Hằng số trong C++ (Constants).
Cảm ơn bạn đã đọc bài viết. Nếu có bất kỳ thắc mắc hoặc góp ý nào, hãy để lại bình luận để chúng ta có thể cùng nhau phát triển. Hãy luôn luyện tập, thử thách và không ngại khó!
Thảo luận
Nếu bạn có bất kỳ khó khăn hoặc thắc mắc nào về khóa học, hãy đặt câu hỏi trong phần bình luận bên dưới hoặc trong mục Hỏi & Đáp trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.