我试图编写以下程序来从文本文档中每行读取一个单词,然后将相同的单词打印到另一个文本文档,但由于某种原因,我在添加后遇到了相当大的错误:
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;
}
答案 0 :(得分:1)
为什么不getline (myfile_in, arr[i]);
?
答案 1 :(得分:1)
也许,在while循环之后你已经阅读了整个文件。然后在for循环中再次尝试从此流中读取。我想,你应该从for循环中删除readline命令。