01/10/2018, 15:48

Cách hoạt động của hàm getline

istream& getline (istream& is, string& str, char delim);
Em có một số thắc mắc về giá trị trả về của hàm getline, thì em đọc từng từ trong một text file vào str, tức là khi gặp kí tự khoảng trắng ’ ’ thì nó sẽ dừng lại, và đưa chuỗi vừa đọc được vào str. Em vẫn chưa hiểu là khi đến cuối dòng, vẫn có thể đọc được từ cuối cùng trong khi không có ’ ’ ở cuối.
Thêm nữa là em vẫn chưa hiểu giá trị trả về của hàm này để có thể thoát khỏi vòng lặp while. Mong mọi người giải đáp. Em xin cảm ơn mọi người.

       string str;
int count = 0;
// Đọc từng dòng trong tệp tin vào str
while (getline(dataFile, str))
{
	stringstream ss(str);
	// Đếm số từ trong từng dòng
	while (getline(ss, str, ' '))
		count++;
}
rogp10 viết 18:04 ngày 01/10/2018

Code này không đúng khi gặp nhiều khoảng trắng liên tiếp nhau.

  1. Điều kiện dừng của getline là khi gặp ’ ’ hoặc end-of-file bạn, nên vẫn nhận được.
  2. getline trả về stream, stream suy biến thành pointer (C++98) hay boolean (C++11): stream lỗi thì biến thành false.

http://www.cplusplus.com/reference/ios/ios/operator_bool/

Thanh Kiet viết 17:48 ngày 01/10/2018

Mình hiểu rồi, cám ơn bạn

Bài liên quan
0