C++问题:if( input.rdstate() & std::ios::failbit )

简介:

前言

今天在博客园的博问里面看到这个问题:觉的挺不错的,收集一下。以后有时间的话也会继续收集一些自己不会的问题,然后整理到自己的博客里面。

因为不断的遇到问题,不断的解决问题才能更好,更快的学习,成长。或许将来一不小心自己也遇到了同样的问题的话,就有经验了。

正文:原问题地址:http://q.cnblogs.com/q/35130/

其中的:

1
2
3
std::ifstream input;
input.open( filename.c_str(), std::ifstream::in );
if ( input.rdstate() & std::ios::failbit )

if语句那一行怎么理解?

解答:

1:iostate rdstate ( ) const; 返回的是iostate,简单的说也就是一个int数值.用2进制数据的某一个位置设置为1表示一种状态

2:failbit 的定义如下,二进制数据的第二位为1的时候说明是该数据。

static const _Iostate goodbit = (_Iostate)0x0;
static const _Iostate eofbit = (_Iostate)0x1;
static const _Iostate failbit = (_Iostate)0x2;
static const _Iostate badbit = (_Iostate)0x4;
static const _Iostate _Hardfail = (_Iostate)0x10;

3:input.rdstate() & std::ios::failbit  通过位运算的与来判断当前的状态是否是failbit。

不过不能说是等价与if( input.rdstate()==std::ios::failbit ),

if( (input.rdstate() & std::ios::failbit)==std::ios::failbit),因为input.rdstate()中有多个状态,而std::ios::failbit 只是一个状态而已。

 


==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2478771.html,如需转载请自行联系原作者
相关文章
|
17小时前
|
安全 C++
C++一分钟之-字符串处理:std::string
【6月更文挑战第25天】`std::string`是C++文本处理的核心,存在于`<string>`库中。它支持初始化、访问、连接、查找、替换等操作。常见问题包括空指针解引用、越界访问和不当内存管理。要安全使用,确保字符串初始化,用`at()`检查边界,用`.empty()`检查空字符串,且无需手动释放内存。高效技巧包括预先分配内存、利用互转函数以及使用迭代器。记得正确比较和遍历字符串以保证代码效率和安全性。
15 5
|
12天前
|
C++
c++中的using namespace std;
c++中的using namespace std;
|
1月前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
23 0
|
1月前
|
编译器 C语言 C++
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
|
1月前
|
C++
C++11 std::lock_guard 互斥锁
C++11 std::lock_guard 互斥锁
16 0
|
1月前
|
安全 程序员 C++
【C++ 基本知识】现代C++内存管理:探究std::make_系列函数的力量
【C++ 基本知识】现代C++内存管理:探究std::make_系列函数的力量
120 0
|
1月前
|
安全 算法 编译器
【C++ 基础知识】进一步了解 C++ 中 操纵符std::endl 的原理
【C++ 基础知识】进一步了解 C++ 中 操纵符std::endl 的原理
51 0
|
1月前
|
存储 算法 调度
【C/C++ 数据结构 优先队列】了解学习`std::priority_queue`的使用
【C/C++ 数据结构 优先队列】了解学习`std::priority_queue`的使用
54 3
|
1月前
|
算法 编译器 C++
【C++ 14 新特性 std::integer_sequence 】了解 std::integer_sequence 的使用
【C++ 14 新特性 std::integer_sequence 】了解 std::integer_sequence 的使用
63 1
|
1月前
|
Java 中间件 API
【C/C++ 线程 】深入浅出:理解 std::thread 的局限性
【C/C++ 线程 】深入浅出:理解 std::thread 的局限性
78 2