gpt4 book ai didi

c++ - 将 ifstream 转换为 bool 和使用 ifstream::is_open() 之间的区别

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

也许是个伪问题,但我需要一个明确的答案。这些函数的返回有什么不同吗

int FileExists(const std::string& filename)
{
ifstream file(filename.c_str());
return !!file;
}

int FileExists(const std::string& filename)
{
ifstream file(filename.c_str());
return file.is_open();
}

所以换句话说,我的问题是:将 fstream 转换为 bool 会给出与 fstream::is_open() 完全相同的结果吗>?

最佳答案

没有。 is_open 只检查是否有关联的文件,而转换为 bool 也会检查文件是否准备好进行 I/O 操作(例如,流处于良好状态)(C++11 起)。

is_open

Checks if the file stream has an associated file.

std::basic_ios::operator bool

Returns true if the stream has no errors occurred and is ready of I/O operations. Specifically, returns !fail().

关于c++ - 将 ifstream 转换为 bool 和使用 ifstream::is_open() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920457/

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