C++ 从输入文件读取数组列表

C++ 从输入文件读取数组列表,c++,arrays,input,C++,Arrays,Input,我试图从输入文件中读取数组列表,对其进行处理,然后打印结果。我注意到我没有正确地读取数组,但我无法找出我做错了什么。问题似乎是以前数组中的随机数被添加到后续数组的末尾 为了测试我的代码,我添加了几行代码,让它打印出代码读取的原始数组,这清楚地表明数组不再相同。我在最后包括了一个原始数组的示例和我的输出 任何帮助都将不胜感激 这是我的代码中从输入文件读取数组的部分: int a[50]={0}; ifstream inputFile; string s; stringstream ss; stri

我试图从输入文件中读取数组列表,对其进行处理,然后打印结果。我注意到我没有正确地读取数组,但我无法找出我做错了什么。问题似乎是以前数组中的随机数被添加到后续数组的末尾

为了测试我的代码,我添加了几行代码,让它打印出代码读取的原始数组,这清楚地表明数组不再相同。我在最后包括了一个原始数组的示例和我的输出

任何帮助都将不胜感激

这是我的代码中从输入文件读取数组的部分:

int a[50]={0};
ifstream inputFile;
string s;
stringstream ss;
string outputfile = "out.txt";
...
int n;
char c;
inputFile.open("in.txt");
while(getline(inputFile, line)){
    int stringSize = line.length();
    line = line.substr(1, stringSize - 2);

    istringstream input(line);
    string number;
    vector<int> ints;
    while(getline(input, number, ',')){
        istringstream iss(number);
        int i;
        iss >> i;
        ints.push_back(i);
    }
    copy(ints.begin(), ints.end(), array);
    int size = sizeof(array) / sizeof(array[0]);
    a1(array, size, outputfile);
}
inputFile.close();
这就是my out.txt现在的样子:

1, 2, 4, -1, 4, -10, 4, -19, 18, -1, -3, -4, 11, 3, -20, 19, -33, 50, 66, -22, -4, -55, 91, 100, -102, 9, 10, 19, -10, 10, 11, 11, -10, -18, 50, 90, 0
12, 12, 14, -88, -1, 45, 6, 8, -33, 2, 8, -9, -33, -8, -23, -77, -89, 1, 9, 10, 92, 87, 91
565, 78, 33, 9, 10, 84, 71, -4, -22, -55, -10, 76, -9, -9, -11, 76, 89, 11, 10, -33, 9, 87
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11
2, 3
-1, -1, -1, -1, -1, -100, -10, -10, 100, 100, 100, 100, -100, 100, 10, -10, -1, 3
12, 23, 44, -17, 12, 14, -88, -1, 45, 6, 8, -33, 2, 8, -9, -33, -8, -23, -77, -89, 1, 9, 13, -25, 10, 92, 57, 99, -22

我将[100]={0}移动到循环的内部,正如其中一条评论所建议的那样,这似乎解决了问题


我现在可以正确使用数组,但我的输出总是在数组末尾添加一个0。这现在是一个小问题,不再影响我的代码。

您可能需要阅读以下内容:。您还应该测试stringstream故障。。。同样,您相信您可以在不深入流缓冲区的情况下实现所要实现的目标。我怀疑问题出在
a1()
。它打印的元素太多了。如果它有一个
for()
循环,它应该使用
i
,而不是
i我认为您需要删除
inta[50]={0}并将其移动到
循环中,同时
循环中,以便每次读取一行时都初始化数组。另外,将
while(!inputFile.eof())
替换为
while(getline(inputFile,s))
您可以从这里抄袭阅读部分所需的大部分内容:感谢大家的评论,我修改了.eof()部分并再次检查了我的打印功能(现在已添加到原始帖子中),但它仍然给了我同样的问题。
[1, 2, 4, -1, 4, -10, 4, -19, 18, -1, -3, -4, 11, 3, -20, 19, -33, 50, 66, -22, -4, -55, 91, 100, -102, 9, 10, 19, -10, 10, 11, 11, -10, -18, 50, 90]
[12, 12, 14, -88, -1, 45, 6, 8, -33, 2, 8, -9, -33, -8, -23, -77, -89, 1, 9, 10, 92, 87]
[565, 78, 33, 9, 10, 84, 71, -4, -22, -55, -10, 76, -9, -9, -11, 76, 89, 11, 10, -33, 9]
[2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
[2]
[-1, -1, -1, -1, -1, -100, -10, -10, 100, 100, 100, 100, -100, 100, 10, -10, -1]
[12, 23, 44, -17, 12, 14, -88, -1, 45, 6, 8, -33, 2, 8, -9, -33, -8, -23, -77, -89, 1, 9, 13, -25, 10, 92, 57, 99, -22]
1, 2, 4, -1, 4, -10, 4, -19, 18, -1, -3, -4, 11, 3, -20, 19, -33, 50, 66, -22, -4, -55, 91, 100, -102, 9, 10, 19, -10, 10, 11, 11, -10, -18, 50, 90, 0
12, 12, 14, -88, -1, 45, 6, 8, -33, 2, 8, -9, -33, -8, -23, -77, -89, 1, 9, 10, 92, 87, 91
565, 78, 33, 9, 10, 84, 71, -4, -22, -55, -10, 76, -9, -9, -11, 76, 89, 11, 10, -33, 9, 87
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11
2, 3
-1, -1, -1, -1, -1, -100, -10, -10, 100, 100, 100, 100, -100, 100, 10, -10, -1, 3
12, 23, 44, -17, 12, 14, -88, -1, 45, 6, 8, -33, 2, 8, -9, -33, -8, -23, -77, -89, 1, 9, 13, -25, 10, 92, 57, 99, -22