Xem thêm

Nhập, Xuất và Định dạng dữ liệu trong C++ (Input and Output)

Huy Erick
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...

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ụng std::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::leftstd::right được dùng chung với std::setw(n) để canh lề trái hoặc lề phải.
  • Toán tử std::setfill(ch) dùng chung với std::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ùng std::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.

1