gpt4 book ai didi

c++ - "if (getline(fin, str)) {}"是否符合C++11标准?

转载 作者:可可西里 更新时间:2023-11-01 18:04:03 27 4
gpt4 key购买 nike

我检查了 C++11 标准,发现了以下事实:

  1. std::getline(fin, str) 返回一个basic_ios对象,其类有一个成员函数explicit operator bool() const;

  2. basic_ios 类没有成员函数 operator void*() const; 作为 C++11 之前的版本。

所以,我认为 if (getline(fin, str)) {} 不符合标准。应该写成

if (bool(getline(fin, str)){}。(但是,VC++ 2012 对此用法给出警告。即强制 void* 为 bool)

我说的对吗?

最佳答案

代码是一致的。当对象自动用作条件 时,将调用到bool 的显式转换运算符。标准的更改旨在保持相同的用法,同时使其更安全。

关于c++ - "if (getline(fin, str)) {}"是否符合C++11标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14720913/

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