【发布时间】:2015-09-23 11:48:51
【问题描述】:
我想创建一个工厂类,从文件中创建和加载对象;
但是,当我尝试从文件中读取 int 时,它似乎返回了错误的数字。
std::ifstream input;
input.open("input.txt");
if (!input.is_open()){
exit(-1);
}
int number;
input >> number;
cout << number;
input.close();
当我在input.txt 文件中输入一个数字时,它会显示:-858993460。
更改数字并没有什么不同,当我使用 cin 而不是 ifstream 时,它的工作原理应该是这样。我可能只是错过了一些非常愚蠢的东西,但我无法弄清楚。
编辑:使用getLine() 可以正常工作。我猜使用>>有问题。
【问题讨论】:
-
Why are you not checking the input operation? 是什么让你认为它读取了 any 值,对还是错,如果你不检查它?
-
-858993460 是 0xCCCCCCCC 的十进制值,这是未分配变量的值。那是因为您的
number变量未填充从文件中读取的值。 -
"当我在 input.txt 文件中输入数字时"是什么意思?您是否尝试在程序读取时编辑 input.txt 文件?程序开始运行时文件包含什么内容?
-
预感:您正在编辑的文件与您的程序正在打开的文件不同。