#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个非常大的负数,然后是文件的内容。
任何想法我做错了什么?
答案 0 :(得分:1)
您对num.get(array[i])
的使用与其任何签名都不匹配。 See get
method description。你想要的是这个:
array[i] = num.get();
答案 1 :(得分:0)
正如评论中所讨论的,您尝试读取一个编码为文本的整数。为此,您需要使用operator>>
(读取编码为字符串的任何类型)而不是get
(读取单个字节):
num >> array[i];