Lỗi đọc file bị gấp đôi từ cuối?

em viết một đoạn code đọc file và khi chạy từ cuối cùng nó bị hiển thị 2 lần. Mong mọi người giúp em ạ.

#include<iostream>
#include<fstream>
#include<cstring>

using namespace std;

int main(){
	fstream ifs("C:\\Users\\Admin\\Desktop\\input.txt");
	string number;
	while(!ifs.eof()){
		ifs >> number;
		cout << number << " ";
	}
	ifs.close();
	return 0;
}

trong C++ đừng xài EOF hay eof() bao giờ hết :V

để biết khi nào kết thúc file thì xài thẳng biến file đó làm điều kiện luôn: while (ifs). fstream có thể cast thành bool, true khi đọc file được, false khi ko đọc file được. Ko đọc file được có nghĩa là file đó ko tồn tại, hoặc đọc bị lỗi trước đó (ví dụ đọc chữ vào số), hoặc đã đọc hết file.

sửa vòng while lại thành

while (ifs >> number) {
    cout << number << " ";
}

xài thẳng ifs >> number luôn vì giá trị trả về của ifs >> nifs. Lúc này vòng while while (ifs >> number) đọc là “khi nào còn đọc được number từ ifs” rất hợp tai :V

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?