想要从文件“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;
}
}
答案 0 :(得分: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;
}