0

想从文件“Hello.cpp”中一次填充一行。但是,如果我按照下面的方式执行此操作,我会填充整个文件 [w] 次,而不是只为 i 的每次迭代从文件中抓取一行。

如果我从 getline 中删除 { },则数组将填充最后一行 "Hello.cpp" [w] 次。

我不确定如何每次从 Hello.cpp 文件中获取新的 [i]。

#include <string>
#include <fstream>
#include <iostream>

using namespace std;

int main() {
int w=0;
ifstream in("Hello.cpp"); 
string s;
while(getline(in, s))
     w=w+1; //first count the number of lines in the file for the array

string a[w];//make an array big enough for the file
for(int i = 0; i < w ; i++) {
    ifstream in("Hello.cpp");
    string s;
    while(getline(in, s)){
        a[i] = s;
        cout << i + 1 << " " << s << endl;
   }
}
4

1 回答 1

0

我会在重新打开之前关闭您的文件(最佳做法)。

在我看来,您需要将文件打开(ifstream 构造函数)移到 for 之外(您真的要打开文件 w 次)吗?既然您费心先数行数,您是否真的想要这样的东西:

ifstream in1("Hello.cpp");
for(int i = 0; i < w ; i++) {
    getline(in1, a[i]);
    cout << i + 1 << " " << a[i] << endl;
 }
于 2013-10-20T04:17:34.637 回答