Đọc chuỗi từ file

Mình có 1 file a.txt có nội dung

1
2
abc cde

giờ có 1 đoạn code

#include <iostream>
#include <fstream>

using namespace std;
int main ()
{
    int a, c;
    string b;
    ifstream doc;
    doc.open("a.txt");
    doc >> a;
    doc >> c;
    getline (doc,b) ;
    doc.close();
    cout << a <<endl<< b << endl<< c << endl; 
    // ghi vào file a.txt
    ofstream ghi;
    ghi.open("a.txt");
    ghi << a+1<< endl;
    ghi << b << endl;
    ghi << c +1<< endl;
    ghi.close();
}

Nhưng nó không đọc được cái string b trong khi a, c vẫn đọc được. Vậy mình phải làm sao để sửa vậy.
Mình cảm ơn.

Xóa bộ nhớ đệm trước khi nhập string.
Vì khi bạn truyền vào c rồi, con trỏ file ở ngay sau giá trị đó nên getline sẽ nhận luôn vào b ký tự xuống dòng.

doc >> a;
doc >> c;
doc.ignore();
getline (doc, b);
2 Likes

Sử dụng getline để đọc từng dòng, kể cả số.
đưa line đọc được vào stringstream.
Từ stringstream, lấy ra dữ liệu cần thiết.

int a, c;
string b;
ifstream doc;
doc.open("a.txt");
stringstream ss;
string input;
getline(doc, input);
ss << input;
ss >> a;
getline(doc, input);
ss << input;
ss >> c;
getline(doc, input);
ss << input;
ss >> b;
2 Likes

như vậy thì khá rắc rối khi các dạng thông tin của mình khác nhau và có những khoảng trắng ví dụ như lưu cùng lúc học tên tuổi và địa chỉ

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