Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尝试将字符串输入到动态分配的数组时出错_C++_Arrays_Compiler Errors_Dynamic Arrays - Fatal编程技术网

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

C++ 尝试将字符串输入到动态分配的数组时出错,c++,arrays,compiler-errors,dynamic-arrays,C++,Arrays,Compiler Errors,Dynamic Arrays,我试图编写以下程序,从文本文档中每行读取一个单词,然后将相同的单词打印到另一个文本文档中,但由于某种原因,在添加后我遇到了一个相当大的错误: for(int i = 0; i < num_lines; i++) { getline (myfile_in, line); stringstream(line) >> arr[i]; } for(int i=0;i>arr[i]; } 我不知道为什么这会导致错误,因为我从以前编写的程序复制了这个循环。一旦删除str

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

for(int i = 0; i < num_lines; i++)
{
    getline (myfile_in, line);
    stringstream(line) >> arr[i];
}
for(int i=0;i>arr[i];
}
我不知道为什么这会导致错误,因为我从以前编写的程序复制了这个循环。一旦删除stringstream行,错误就会消失,但据我所知,我需要它来将内容复制到数组中。任何帮助都将不胜感激:)

#包括
#包括
#包括
#包括
使用名称空间std;
内部主(空)
{   
ifstream myfile_in;
myfile_in.open(“words_in.txt”);
把我的文件流出来;
myfile_out.open(“words_out.txt”);
弦线;
int num_行=0;
字符串*arr;
断言(!myfile_in.fail());
我的文件在>>行中;
而(!myfile_in.eof())
{
getline(myfile_in,line);
num_lines++;
}
arr=新字符串[num_行];
对于(int i=0;i>arr[i];
}
对于(int i=0;imyfile\u out为什么不
getline(myfile\u in,arr[i])

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

while(!myfile\u in.eof())
我相信你会以这种方式阅读文件的结尾,嗯,我该如何解决这个问题?你为什么不使用
arr[I]=line
arr[I]=string(line)
?@malhotraprateek不应该
stringstream(line)>>arr[I]
完成类似的事情?不知道:P从未使用过,但它似乎有点复杂…我只是尝试了一下,它在编译时不会崩溃,但它只是在输出文件中打印空行。@CalebMoriarty这是因为在
中(!myfile_in.eof())
loop您已经阅读了文件中的所有行。如果您需要再次阅读,您可以尝试重新打开该文件。@CalebMoriarty,我相信使用
std::vector
可能是解决您问题的更好方法。我肯定会的,但我还没有在课堂上了解到这一点哈哈。@CalebMoriarty lol。解决方法很简单,添加
myfile\In、 请参见while循环后的kg(0)
#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;
}