Tôi đang làm việc trên một nhiệm vụ mà tôi phải đọc một tập tin và đếm số dòng và đồng thời đếm các từ trong đó. Tôi đã thử một sự kết hợp của getline và strtok bên trong một vòng lặp while, mà không hoạt động.Làm cách nào để tách tệp văn bản thành các từ?
tệp: example.txt (tệp cần đọc).
Xin chào, xin chào thật bất ngờ.
Chào mừng bạn đến với địa điểm này.
Có thể bạn có một kỳ nghỉ thú vị tại đây.
(3 dòng và một số từ).
Readfile.cpp
#include <iostream>
#include <fstream>
#include<string>
using namespace std;
int main()
{
ifstream in("example.txt");
int count = 0;
if(!in)
{
cout << "Cannot open input file.\n";
return 1;
}
char str[255];
string tok;
char * t2;
while(in)
{
in.getline(str, 255);
in>>tok;
char *dup = strdup(tok.c_str());
do
{
t2 = strtok(dup," ");
}while(t2 != NULL);
cout<<t2<<endl;
free (dup);
count++;
}
in.close();
cout<<count;
return 0;
}
Bạn cần phải nói nhiều hơn "không làm việc". Hãy cho chúng tôi biết bạn nhận được lỗi nào, hoặc điều CỤ THỂ mà chương trình của bạn thực hiện khác với bạn mong đợi, sau đó hỏi một câu hỏi cụ thể. Chúng tôi sẽ không gỡ lỗi hoặc viết lại bài tập về nhà cho bạn. – Blorgbeard
Làm thế nào về một số ví dụ từ những điều sau đây: http://www.codeproject.com/KB/recipes/Tokenizer.aspx Họ rất hiệu quả và phần nào thanh lịch. Thư viện String Toolkit làm cho việc xử lý chuỗi phức tạp trong C++ đơn giản và dễ dàng. –