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

Error when attempting to input strings into dynamically allocated array

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

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

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

可能,在 while 循环之后您已经读取了整个文件。然后在 for 循环中,您再次尝试从此流中读取行。我认为,您应该从 for 循环中删除 readline 命令。