C ++将文件中的值转换为数组

时间:2014-10-29 00:15:31

标签: c++

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <fstream>

using namespace std;

void make_array(ifstream& num, int (&array)[50]);

int main()
{
    ifstream file; // variable controlling the file
    char filename[100]; /// to handle calling the file name;
    int array[50];

    cout << "Please enter the name of the file you wish to process:";
    cin >> filename;
    cout << "\n";

    file.open(filename);

    if (file.fail()) {
        cout << "The file failed to open.\n";
        exit(1);
    } else {
        cout << "File Opened Successfully.\n";
    }

    make_array(file, array);

    file.close();

    return (0);
}

void make_array(ifstream& num, int (&array)[50])
{
    int i = 0; // counter variable

    while (!num.eof() && i < 50) {
        num >> array[i];
        i = i + 1;
    }

    for (i; i >= 0; i--) {
        cout << array[i] << "\n";
    }
}

我正在尝试使用fstream将文件中的值读取到数组中。当我尝试显示数组的内容时,我得到2个非常大的负数,然后是文件的内容。

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:1)

您对num.get(array[i])的使用与其任何签名都不匹配。 See get method description。你想要的是这个:

array[i] = num.get();

答案 1 :(得分:0)

正如评论中所讨论的,您尝试读取一个编码为文本的整数。为此,您需要使用operator>>(读取编码为字符串的任何类型)而不是get(读取单个字节):

num >> array[i];