尝试将字符串输入动态分配的数组时出错

时间:2015-10-15 07:48:38

标签: c++ arrays compiler-errors dynamic-arrays

我试图编写以下程序来从文本文档中每行读取一个单词,然后将相同的单词打印到另一个文本文档,但由于某种原因,我在添加后遇到了相当大的错误:

for(int i = 0; i < num_lines; i++)
{
    getline (myfile_in, line);
    stringstream(line) >> arr[i];
}

我不确定为什么这会导致错误,因为我从之前编写的程序中复制了这个循环。一旦我删除了stringstream行,错误就消失了,但据我所知,我需要它才能将内容复制到数组中。任何帮助将不胜感激:)

#include <fstream>
#include <string>
#include <sstream>
#include <assert.h>

using namespace std;

int main(void)
{   
ifstream myfile_in;
myfile_in.open ("words_in.txt");
ofstream myfile_out;
myfile_out.open ("words_out.txt");

string line;
int num_lines = 0;
string *arr;

assert (!myfile_in.fail());
myfile_in >> line;

while (!myfile_in.eof())
{
    getline (myfile_in, line);
    num_lines++;
}

arr = new string[num_lines];

for(int i = 0; i < num_lines; i++)
{
    getline (myfile_in, line);
    stringstream(line) >> arr[i];
}

for(int i = 0; i < num_lines; i++)
{
    myfile_out << arr[i] << endl;
}

myfile_in.close();
myfile_out.close();
return 0;
}

2 个答案:

答案 0 :(得分:1)

为什么不getline (myfile_in, arr[i]);

答案 1 :(得分:1)

也许,在while循环之后你已经阅读了整个文件。然后在for循环中再次尝试从此流中读取。我想,你应该从for循环中删除readline命令。