gpt4 book ai didi

C++ 揭秘第 13 章 (2004) Jeff Kent : Ifstream program does not return expected output

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:17:40 27 4
gpt4 key购买 nike

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)

感谢斯科特·凯利的支持

最佳答案

该代码从来都不是真正应该工作的(将输入流写入输出流是什么意思?!)但曾经“意外地”工作,因为 C++03 中的流隐式转换为 void* 可用于测试流的状态,因此您可以打印 void* 的值。

在 C++11 中,转换已被显式转换为 bool 值,因此该代码的现代等价物(它的作用更加清晰)是:

cout << "(infile) = " << (bool)infile << endl;

或:

cout << "(infile) = " << static_cast<bool>(infile) << endl;

关于C++ 揭秘第 13 章 (2004) Jeff Kent : Ifstream program does not return expected output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31138688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com