使用数组从文件打印整数

时间:2018-02-12 00:33:28

标签: c++ arrays file ifstream

我刚刚开始学习C ++,而且我在使用程序时遇到了一些麻烦。它应该从外部文件中排序数字。我成功地编写了排序算法代码,但我在使用外部文件时遇到了问题。我只是在一个单独的程序中测试一些东西,以了解ifstream的工作方式。一旦我更好地理解它是如何工作的,我应该能够弄清楚如何将它实现到我的程序中。

#include <iostream>
#include <fstream>
#include <string>
#include <vector>


int main() {
    using namespace std;


    int count;
    ifstream InFile;

    InFile.open ("unsorted.txt");

InFile >> count;
int numbers[count];      

for(int a = 0; a < count; a++)
    InFile >> numbers[a];
    cout << numbers << endl;
}

目前,这个输出是0x7ffc246c98e0我不知道为什么会这样我只是试图打印我的整数文件。谁能帮忙解释一下我做错了什么?我会非常感激。

2 个答案:

答案 0 :(得分:5)

当你这样做时

2018-01-20 05:19:54.812
2018-01-20 05:19:54.813
2018-01-20 05:19:54.833
2018-01-20 05:19:54.841
2018-01-20 05:19:54.872
2018-01-24 02:14:30.153
503

将指针打印到数组的第一个元素。

你想要

cout << numbers << endl;

打印当前元素。

此外,如果您的所有程序都在执行,那么您实际上并不需要数组。您只需要一个cout << numbers[a] << '\n'; 变量:

int

这也解决了可变长度数组的问题(因为没有)。

答案 1 :(得分:0)

如果您打算使用count变量来计算文件大小或其他内容,那么这就是您的代码出错的地方。您无法像尝试一样计算文件的长度。

while( getline ( InFile, line ) )
{
count += line.length();
}

也许,试试这样!!! 如果你使用

InFile>>count;

它会尝试将InFile流中的所有字符串存储到count,这不是意图。