我有一个文件,想在屏幕上打印出来,但是它只返回"0x28fe88",而这个文件实际上是13列,几百行。
#include <iostream>
#include <fstream>
#include <istream>
#include <ostream>
#include <cstdlib>
using namespace std;
int main()
{
//Opens .txt file
ifstream infile1;
infile1.open("Taylor.txt");
//Fail check
if(infile1.fail())
{
cout << "File failed to open.\n";
exit(1);
}
//Prints file to screen (not correctly)
cout << infile1;
//Closes file
infile1.close();
return 0;
}
我本来不想公布完整的代码,但我希望它足够简短,不会引起争议。
cout << infile1;
并不会将文件内容打印到标准输出(stdout)。它实际上是在打印对象地址。 - greatwolfbasic_ios
)具有转换为void*
的功能,该功能指示流是否处于良好状态(如果不是,则返回空指针,否则返回非空指针);原始代码显示的是此转换运算符的结果。在C++11中,该转换不再存在;它已被替换为explicit operator bool()
,其在非布尔上下文中不会引入神秘的转换,但具有相同的目的。 - Pete Becker