Đọc hết file trong C++

E mới học lập trình nên chưa bt cách đọc hết file mà ko bt số phần tử ạ, ai cao tay chỉ giáo với ạ :>>

Vd:
input:

455 654 35 77 987 123 867 45 365

Từ khóa: istream eof.

ko xài eof nha :V istream trong C++ có thể cast thành boolean, khi ko đọc được nữa thì nó sẽ được cast thành false

ví dụ có

std::ifstream ifs{"ten-file.txt"};

đọc và in từng phần tử ra:

for (int k; ifs >> k;) std::cout << k << " ";

đọc và lưu tất cả các phần tử vào mảng:

// cách 1
std::vector<int> v;
for (int k; ifs >> k;) v.push_back(k);

// cách 2 xài istream_iterator trong header <iterator> 
std::vector<int> arr(std::istream_iterator<int>{ifs}, {});

còn nếu đọc toàn bộ nội dung của file từng kí tự một thì thay vì xài istream_iterator<char> đi xài istreambuf_iterator<char> nha :V

std::string fileContent(std::istreambuf_iterator<char>{ifs}, {});

cách xài istreambuf này có vẻ ko tối ưu nhất, trên SO có nhiều cách tối ưu hơn :V

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