C++标准库笔记
shanql
这个作者很懒,什么都没留下…
展开
-
C++标准库笔记:13.4.3 Stream状态与布尔条件测试
流条件测试int a = 0;while( (std::cin >> a) ){ cout << a << endl;}以上代码得以使用std::cin来做条件测试,是因为Stream在类ios_base内定义了两个可用于布尔表达式的函数,__CLR_OR_THIS_CALL operator void *() const { // test if any stream o原创 2017-05-27 00:37:24 · 399 阅读 · 0 评论 -
C++标准库笔记:13.12.2 实作一个Input操作符
实作一个Input操作符,即重载操作符operator <<。原则同实作Output操作符相同,参看C++标准库笔记:13.12.1 实作一个Output操作符下文代码所用测试类:class Fraction{public: Fraction( int nNumerator = 0, int nDemominator = 1 ) :m_nNumerator( nNumer原创 2017-06-10 22:22:41 · 282 阅读 · 0 评论 -
C++标准库笔记:13.12.3 以辅助函数完成I/O
如果执行IO操作符时需要存取对象的私有成员,通常有以下两种方法:使用辅助函数IO操作符应该将实际任务委派给辅助的成员函数。这种技术允许具有多态性,如下:class Fraction{public: Fraction( int nNumerator = 0, int nDemominator = 1 ) :m_nNumerator( nNumerator ), m_nDem原创 2017-06-12 08:54:02 · 419 阅读 · 0 评论 -
C++标准库笔记:13.12.1 实作一个Output操作符
实作一个Output操作符,即重载IO操作符。 表达式stream ,根据语法规则,上式有两种解释:stream.operator operator原创 2017-06-10 21:01:21 · 368 阅读 · 0 评论 -
C++标准库笔记:13.7 格式化
格式标志格式标志可以控制输入输出的格式,比如是否在正数前加+号,用八进制、十进制、十六进制来显示数据等。以下是访问格式标志的成员函数(定义在ios_base类中) 成员函数 意义 setf(flags) 增加标志,返回修改前的所有标志 setf(flags, mask) 增加标志,mask参数存放的标志则被清除,返回修改前的所有标志 unsetf(flags) 清除标志原创 2017-06-04 11:24:50 · 693 阅读 · 0 评论 -
C++标准库笔记:13.6 操控器
操控器是什么std::cout << std::endl;此句代码中std::endl为操控器,操控器是用来操控stream对象的,常常只会改变输入或格式化输出的解释方式。std::cout << std::endl:输出’\n’,并刷新output缓冲区std::cout << std::ends:输出’\0’std::cout << std::flush:刷新output缓冲区std::原创 2017-06-03 16:45:18 · 567 阅读 · 0 评论 -
C++标准库笔记:13.11 String Stream Classes
String Stream Classesbasic_istringstream,特化版本istringstream\wstringstreambasic_ostringstream,特化版本ostringstream\wostringstreambasic_stringstream,特化版本stringstream\wstringstreambasic_stringbuf,特化版本s原创 2017-06-06 09:30:20 · 428 阅读 · 0 评论 -
C++标准库笔记:算法--min/max/swap/iter_swap
两值中较大和较小值泛型函数std::min返回两者之中较小值 泛型函数std::max返回两者之中较大值#include <iostream>#include <algorithm>using namespace std;bool int_ptr_less( int* left, int* right ){ return *left < *right;}int main(){原创 2017-06-15 23:27:04 · 557 阅读 · 0 评论 -
C++标准库笔记:13.10 连接Input Streams 和 Output Streams
常常会需要连接两个streams:你可能想在读取数据前确保屏幕上已经打印出文字(用tie函数来实现)以不同的格式处理同一个stream(用共享stream缓冲区来实现,对应函数为rdbuf)将标准streams重定向到其它streams对同一个stream读取和改写–主要发生在file stream身上以tie()完成”松耦合“tie( ostream* output_str原创 2017-06-04 23:01:34 · 498 阅读 · 0 评论 -
C++标准库笔记:13.5 标准I/O函数
前言同读写格式化数据的>>,<<操作符不同,使用Stream成员函数读取数据时,不跳过起始空格。处理异常不同:使用成员函数,如果在读取期间,发生异常,不论源自某个被调用函数(比如在getline函数内部调用的某函数抛出异常),还是某个标志位被设立,badbit标志均会被设立。(注:成员函数内部实现中应该有一个捕捉异常的代码,在catch里面再做进一步的操作,如设立状态位badbit)输入用的成原创 2017-05-29 17:58:09 · 284 阅读 · 0 评论 -
c++标准库笔记:13.4.4 Stream的状态和异常
设置触发异常Stream缺省的情况下不抛出异常,但可由成员函数exceptions来设置这种行为。exceptions有两种形式:获取引发异常的标志(不带参数)设置引发异常的标志(带参数)// This method is not used in msvcm80.dll, so we do not need to compile it.// Also, if we never change原创 2017-05-28 11:43:39 · 617 阅读 · 0 评论 -
C++标准库笔记:13.12.4 以非格式化函数完成自定义IO操作符
自定义IO操作符时,我们可以使用stream内部对基本型别定义的operator<<各operator>>来组合完成我们复杂的数据格式化;也可以使用IO非格式化函数(如read,get,write等stream的成员函数)来组合完成自定义。观察stream对IO操作符的实现,我们发现,其实现中都会构造一个sentry(岗哨)对象,然后根据这个对象来判断流是否可以进行读写,再决定是否开始读写流。如下,原创 2017-06-15 09:02:12 · 428 阅读 · 0 评论