使用getline循环填充数组

时间:2013-10-20 03:03:15

标签: c++

想要从文件“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;
   }
}

1 个答案:

答案 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;
 }