Nhiệm vụ là tách một câu thành các từ riêng lẻ. Chúng ta sẽ phân tách tất cả các từ có trong câu.
Ví dụ
Input
I am a good boy
Output
I am a good boy
Mỗi từ được in trên một dòng riêng biệt.
Cách tiếp cận
- Nhập chuỗi đầu vào.
- Duyệt qua từng ký tự của chuỗi.
- Khi gặp khoảng trắng, in từ hiện tại và reset bộ đệm từ.
- Kết thúc chuỗi, in từ cuối cùng.
Ví dụ 1: Sử dụng stringstream (khuyên dùng)
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void split(const string& st) {
stringstream ss(st);
string word;
while (ss >> word) {
cout << word << endl;
}
}
int main() {
string st = "Blood from heaven is mortal";
cout << "Original: " << st << endl;
cout << "Words:" << endl;
split(st);
return 0;
}
Kết quả
Original: Blood from heaven is mortal Words: Blood from heaven is mortal
Ví dụ 2: Duyệt thủ công (không dùng stringstream)
#include <iostream>
#include <string>
using namespace std;
void split(const string& st) {
string word = "";
for (char c : st) {
if (c == ' ') {
if (!word.empty()) {
cout << word << endl;
word = "";
}
} else {
word += c;
}
}
if (!word.empty()) cout << word << endl;
}
int main() {
string st = "type a text message";
cout << "Original: " << st << endl;
cout << "Words:" << endl;
split(st);
return 0;
}
Kết quả
Original: type a text message Words: type a text message
Lưu ý: Cách dùng stringstream (ví dụ 1) ngắn gọn và xử lý tự động nhiều khoảng trắng liên tiếp. Cách duyệt thủ công (ví dụ 2) cho phép kiểm soát chi tiết hơn (ví dụ: giữ khoảng trắng, xử lý tab, newline...).