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

c++学习笔记系列:http://blog.csdn.net/column/details/17301.html

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< (2)浮点精度:precision和setprecision。如:
cout.precision(2);
cout<<1.675

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

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)

c++学习笔记系列:http://blog.csdn.net/column/details/17301.html

你可能感兴趣的:(c++学习笔记之输入/输出流)