c++ I/O
1.flush 刷新缓存,endl刷新缓存并换行
cout<<"Hello"<<flush;
cout<<"Wait<<endl;
2.hex,oct,dec 输出16进制,8进制,10进制
cout<<hex cout<<oct cout<<dec
3.使用width调节宽度
cout.width(12);//width函数只影响下一个要显示的item
4.使用fill填充字符。
C++默认使用空格填充字符。cout.fill(*) 使用星号填充
5.使用precision设置浮点数精度位数
cout.precesion(2);//默认6位,这里设置为2位
6.ios_base
boolalpha 用true false表示输出的bool值
showbase 用0,0x显示输出
showpoint 输出小数点
uppercase 输出数时用E代替e(浮点数)
showpos 在正数前添加+号
7.setf
cout.setf(ios_base::hex,ios_base::basefield);//注意参数顺序
ios_base:basefield
(1)ios_base::dec 十进制
(2)ios_base::oct 八进制
(3)ios_base::hex 十六进制
ios_base::floatfield
(1)ios_base::fixed 固定浮点数
(2)ios_base::scientific 科学计数法
ios_base::adjustfield
(1)ios_base::left左对齐
(2)ios_base::right右对齐
(3)ios_base::internal 符号左对齐,值右对齐
setf会返回旧有设置
ios_base::fmtfalgs old=cout.set(ios::left,ios_adjustfield);//新设置为左对齐,会返回old旧有设置的值
cout.set(old,ios::adjustfield);//恢复旧有设置
8.unsetf(fmflags mask);//反向操作
cout.unsetf(ios_base::boolalpha)//不用true false表示布尔值
cout.setf(0,iose_base::floatfield)//恢复系统默认的浮点数显示方式
9.iomanip头文件
包含setprecision(),setfill(),setw()函数
cout<<setprecision(3)<<setfill('*')<<setw(6);//使用方式
10.stream states
(1)eofbit 文件末尾
(2)badbit 流崩溃,如读文件失败
(3)failbit 输入或者输出失败,比如说读整数失败
(4)goodbit =0正常
(5)good() true if流正常
(6)eof() TRUE if eofbit=1
(7)bad() true if badbit=1
(8)fail() true if failbit=1
(9)rdstate()return stream state
(10)exceptions()异常控制
clear()清除所有流标记。
clear(eofbit);清除eof标记
setstate()设置标记
setstate(eofbit);设置流eofbit=1
cin.exceptions(badbit);设置bitbit位会导致扔出异常
cin.exceptions(badbit|eofbit);设置badbit,eofbit会导致扔出异常
11.char c1,c3;
cin.get(c1)>>c3;
cin.get(ch)返回输入流。会将得到的值付给c1
使用
char ch;
while(cin.get(ch)){
}
遇到错误cin.get(ch)会返回false循环退出
cin.get(void)会返回int的值而不是输入流。
使用方法
int ch;
while((ch=ch.get())!=EOF)
12.流的使用技巧
(1)如果需要跳过空格。最好是用>>
(2)程序如果要检验每个输入的字符,使用get()
13.
istream & get(char *,int,char);//char *存储字符串的地址,int,最大字符数,char 截止字符
istream &get(char *,int);//同上,用\n作为截止字符
istream &getline(char *,int char);
isream &getline(char *,int);
get遇到换行符会将其留在流中不处理,getline会读取并扔掉换行符(或截止字符也是同样的处理方式)
14.ignore()
cin.ignore(255,'\n');//忽略255个字符或忽略字符直到遇到换行符
15.get和getline使用
char temp[80];
while(cin.get(temp,80));//遇到空行会终止
while(cin.getline(temp,80)&&temp[0]!=0)//遇到空行终止
char temp[30];
cin.getline(temp,30);//遇到eof会设置eofbit,读到29字符且下一字符不是换行符会设置failbit
get(char *,int) 首先检查字符数,其次eof,最后换行符。读取字符超出时不会设置failbit。如果没有读取到任何字符设置failbit
16.read,peek,gcount
char gross[144];
cin.read(gross,144);//read是读取规定byte数到缓冲区。
peek是读取下一个字符,但不从流中剔除该字符。
cin.peek()
gcount()返回上一次读取的字符数。有效函数有get,getline,ignore,read。>>不可以
putback()函数将一个字符插入回输入流。函数返回值是输入流。
17.生成临时文件名
#include <cstdio>
#include<iostream>
int main(){
using namespace std;
char pszName[L_tmpnam]={0};//L_tmpnam负责控制生成文件名的最大长度
for(int i=0;i<10;i++){
tmpnam(pszName);//tmpnam函数会生成临时文件名
cout<<pszName<<endl;
}
}
另外TMP_MAX是不会产生重复文件名的最大调用次数。

浙公网安备 33010602011771号