c++学习笔记之输入/输出流


1、wchar_t
区别于char,用于存储unicode字符。而char是单字节,只能存储ascii字符。

2、cin/cout/cerr/clog
cerr无缓冲错误流          clog有缓冲错误流

3、输出cout
(1)要打印一个表示字符串的char *的值(即第一个字符的内存地址),“<<”直接打印不行,因为已经被重载为将char *数据类型作为字符串来打印。
        解决方法是将char *强转为void *类型(c++中输出地址,都要这样转)
(2)put函数用于输出字符,可以联级使用,如:cout.put('A').put('\n')

4、输入cin
eof函数:返回是否已经到流结尾
get函数:从流输入一个字符并作为返回值返回,在流结尾会返回EOF值。有三个版本:无参数,一个字符数组参数,三个参数。
                 三参数版本取多个字符放入字符数组中。参数包括一个字符数组,一个数组长度和一个分隔符(默认'\n')。 分隔符不放入字符数组中,但留在输入流中。
getline函数:与get的三参数版本类似,参数包括一个字符数组和一个数组长度。 不同的是将分隔符从流中提取出来丢弃
ignore函数:读取并丢弃一定数量字符(默认一个),遇到指定分割符停止(默认EOF)
putback函数:将先前使用get函数获取的字符再放回流中。
peek函数:返回输入流下一字符,但不从流中移除。
(1)c++有类型安全的I/O,如遇到意料之外的数据类型,各种相应的错误位会被设置。
(2)非格式化的I/O函数有read、write和gcount。gcount返回最近一次输入操作读取的字符数。

5、流操作符
(1)整型流基数:十进制dex,八进制oct,十六进制hex,自定义进制setbase。如:cout<<setbase(6)<<132
(2)浮点精度:precision和setprecision。如:
cout.precision(2);
cout<<1.675

cout<<setprecision(2)<<1.675;
(3)域宽:width和setw。 不是粘性的,当输出域宽大于指定域宽不截短,完整打印。使用同上。
(4)自定义输出流操作符: 返回类型和参数都必须是ostream&类型。如:
ostream& endLine(ostream& output){
     return output<<'\n'<<flash;
}
使用:cout<<'a'<<endLine<<'b'

6、流的格式状态和流操作符
(1)尾数零和小数点:showpoint
(2)对齐:left、right、internal        internal符号左对齐,数字右对齐,如“+    13”、“0x   13”。
(3)内容填充:fill、setfill
(4)整型流基数:showbase、noshowbase     八进制以0开头如0132,十六进制以0x开头如0x132
(5)科学计数法和定点小数:scientific浮点数以科学计数法格式输出;fixed浮点数以指定小数位数显示。
(6)大小写:uppercase和nouppercase
(7)布尔格式: boolalpha以true和fasle显示;noboolalpha以1和0显示。(c++中bool默认显示1和0)
(8)设置重置格式状态:flag——无参函数返回当前格式(fmtflags类型);单参(fmtflags类型)函数将格式重置会参数的状态
(9)强制输出加号(正号):showpos和noshowpos

7、流的错误状态
错误位
获取状态函数
设置时机
eofbit
eof()
输入流遇到文件尾
failbit
fail()
流中发生错误(通常可恢复)
badbit
bad()
数据丢失错误(不可修复)
goodbit
good()
如果上面三个都没设置
rdstate()返回流的错误状态
clear()将流状态重置为goodbit位
clear(ios::failbit)为流设置failbit位
注意: 如果badbit或failbit被设置,或都被设置,则basic_ios成员函数operator!返回true,operator void*则返回false

8、输出流连接到输入流
连接:cin.tie(&cout)      解除连接:inputstream.tie(0)


猜你喜欢

转载自blog.csdn.net/chzphoenix/article/details/79363514