[Bài 5] Làm việc với Chuỗi (String) trong C++

by | Apr 28, 2025 | C/C++, Ngôn ngữ lập trình | 0 comments

Hôm nay chúng ta sẽ khám phá:

  • Khai báo, nhập xuất chuỗi trong C++.
  • Các thao tác cơ bản với string: lấy độ dài, nối chuỗi, truy cập ký tự.
  • Các bài tập cực thực tế về xử lý chuỗi.

1. Khai báo và nhập xuất chuỗi

Trong C++, để làm việc với chuỗi tiện lợi, ta sử dụng kiểu string từ thư viện <string>.

Khai báo:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s = "Xin chao!";
    cout << s << endl;
    return 0;
}

Lưu ý: Đừng quên #include <string> khi làm việc với kiểu string.


Nhập chuỗi từ bàn phím

  • Nếu chuỗi không chứa khoảng trắng (chỉ 1 từ), dùng cin.
string ten;
cin >> ten;
  • Nếu chuỗi có khoảng trắng (câu, cụm từ), dùng getline(cin, s).
string cau;
getline(cin, cau);

Ví dụ 1: Nhập tên đầy đủ

#include <iostream>
#include <string>
using namespace std;

int main() {
    string hoTen;
    cout << "Nhap ho ten: ";
    getline(cin, hoTen);
    cout << "Xin chao, " << hoTen << "!" << endl;
    return 0;
}

2. Một số thao tác cơ bản với string

2.1. Lấy độ dài chuỗi

  • Hàm length() hoặc size() trả về số lượng ký tự trong chuỗi.
string s = "Hello";
cout << s.length(); // 5

2.2. Nối chuỗi

  • Dùng toán tử + để nối 2 chuỗi.
string s1 = "Hello";
string s2 = " World";
string s3 = s1 + s2;
cout << s3; // Hello World

2.3. Truy cập ký tự trong chuỗi

  • Có thể dùng cú pháp giống như mảng: s[i] để truy cập ký tự tại vị trí i (bắt đầu từ 0).
string s = "ABC";
cout << s[0]; // A
cout << s[1]; // B
cout << s[2]; // C

2.4. So sánh chuỗi

  • So sánh hai chuỗi dùng ==, <, >,…
string a = "apple";
string b = "banana";

if (a < b) {
    cout << "apple nho hon banana";
}
  • So sánh theo thứ tự từ điển (chữ cái).

3. Một số ví dụ thực tế

Ví dụ 2: Đếm số lượng ký tự trong chuỗi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    cout << "Nhap chuoi: ";
    getline(cin, s);

    cout << "Do dai chuoi: " << s.length() << endl;
    return 0;
}

Ví dụ 3: Đảo ngược chuỗi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    cout << "Nhap chuoi: ";
    getline(cin, s);

    for (int i = s.length() - 1; i >= 0; i--) {
        cout << s[i];
    }
    cout << endl;

    return 0;
}

Ví dụ 4: Kiểm tra chuỗi Palindrome

  • Palindrome là chuỗi đọc xuôi hay ngược đều giống nhau.
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    cout << "Nhap chuoi: ";
    getline(cin, s);

    bool laPalindrome = true;
    int n = s.length();
    for (int i = 0; i < n/2; i++) {
        if (s[i] != s[n-1-i]) {
            laPalindrome = false;
            break;
        }
    }

    if (laPalindrome)
        cout << "Chuoi la Palindrome." << endl;
    else
        cout << "Chuoi khong la Palindrome." << endl;

    return 0;
}

4. Bài tập thực hành

Bài 1: Nhập một chuỗi và đếm số lượng ký tự ‘a’ trong chuỗi


Bài 2: Nhập một câu, đếm số từ trong câu

Gợi ý:

  • Một từ được tính khi gặp dấu cách ' '.

Bài 3: Viết chương trình nhập một chuỗi và in ra chuỗi viết ngược


Bài 4: Kiểm tra hai chuỗi có giống nhau không (không phân biệt hoa thường)

Gợi ý:

  • Dùng vòng lặp để chuyển hết ký tự về chữ thường (tolower(c)).

Tổng kết

Hôm nay, bạn đã:

  • Biết cách khai báo, nhập, xuất và xử lý chuỗi trong C++.
  • Làm chủ các kỹ thuật: nối chuỗi, duyệt từng ký tự, đếm độ dài chuỗi.
  • Viết được chương trình đảo ngược, kiểm tra Palindrome.

👉 Buổi sau, chúng ta sẽ học:

  • Làm việc với mảng (array): lưu nhiều giá trị cùng lúc, thao tác với tập hợp số liệu!