Đọc từng dòng trong file rồi gán vào 1 xâu

C++
Cho e hỏi cách đọc file này sau đó gán mỗi dòng vào một xâu thì làm thế nào ạ

Có gì mà không làm được.

Mã giả:

fi = fstream("...", i);  // mở file để đọc
while (getline(fi, s)) {
    // xử lí s
}
1 Like

Anh ơi. Vậy làm thế nào để đọc file với số đầu là n(số xâu trong file) và n xâu sau ạ.
Ví dụ như là:
2
1213abas@assaf
ansadw312

E cảm ơn!

Trước hết bạn đọc n, sau đó từ từ đọc n dòng sau.

ifstream fi(...);
int n;
string s;

fi >> n;
getline(fi, s); // đọc xong n, nhảy con trỏ file xuống dòng tiếp theo
for (int i = 0; i < n; i++) {
    getline(fi, s); // đọc string ở dòng hiện tại
    // tiếp tục xử lý gì đó (nếu có)
}
3 Likes


Đây là input của em ạ. Nhưng mà khi chạy câu lệnh như trên thì khi cout ra nó chỉ in 3 lần ra dòng thứ 3 từ trên xuống không tính n thôi anh ạ.

Đây là code của em ạ. Anh xem giúp em tại sao lại vậy với ạ. Em cảm ơn a!

#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
#include <vector>
#include <sstream>

using namespace std;

int main()
{
    ifstream in("in1.in");
    ofstream out;
    out.open("out1.out",ios::out);
    string s;
    int n;
    in >> n;
    getline(in,s);
    for (int i=0;i<n;i++)
    {
        getline(in,s);
    }
    for (int i=0;i<n;i++)
    {
        cout << s << endl;
    }
    return 0;

}

Ủa, sau khi đọc xong n lần thì biến s của bạn chỉ lưu giá trị dòng cuối cùng thôi, in ra vậy là đúng rồi còn gì :neutral_face:

Muốn giữ n dòng lại để đọc trước - xử lý sau thì bạn phải lưu n dòng đó vào 1 mảng string n phần tử chứ.

3 Likes

@@@ Trời ơi. Cảm ơn anh nhiều !!! Nãy giờ e cứ phân vân mãi thì ra tại chỗ đó.
Em cảm ơn anh!

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