C ++,未输出的预期输出取决于students.dat的存在。 如果students.dat尚不存在(并且尚未存在),则输出将为: “(infile)= 000000000(infile.fail())= 1”
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream infile;
infile.open("students.dat");
cout << "(infile) = " << infile << endl;
cout << " (infile.fail()) = " << infile.fail() << endl;
return 0;
}
我收到的错误消息如下:
error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'std::basic_ostream<char,std::char_traits<char>>' (or there is no acceptable conversion)
感谢你的支持,Scott Kelly
答案 0 :(得分:1)
该代码从来没有真正起作用(将输入流写入输出流是什么意思?!)但是过去常常工作&#34;&#34;因为C ++ 03中的流有一个隐式转换为void*
,可用于测试流的状态,因此您可以打印void*
的值。
在C ++ 11中,转换已被替换为显式转换为bool,因此该代码的现代等价物(它更清楚它的作用)是:
cout << "(infile) = " << (bool)infile << endl;
或:
cout << "(infile) = " << static_cast<bool>(infile) << endl;
答案 1 :(得分:0)
我认为你是对的,这一定是一个版本问题,因为我的书已经很老了,而且我正在输入它所说的内容并且它无法正常工作。我想我应该从更新的书中学习。