输入格式
有空格的字符串
cin不能完整输入用空格的字符串,因为在cin遇到空格字符时,认为字符串已经结束了
解决方法 :采用cin.get(arrayname, size)或cin.get(arrayname, size, s),可连空格一起输出,遇到s则直接输出前面的字符
get和getline的区别
get(arrayname, size, s)和getline(arrayname, size, s):
- getline会删除缓冲区中的s
- get不会删除缓冲区中的s,在向get输入带有s的字符串时,cout<<arrrayname输出s前面的字符串,用下一个get(s),cout<<s输出缓冲区中的s
get(arrayname, size)和getline(arrayname, size)
- getline会删除缓冲区中的enter符
- get不会删除缓冲区中的enter符,可用下一个get(s),cout<<s输出缓冲区中的enter符(ASCII码为10)
获取字符数据的两种调用方式
cin.get(a)和a = cin.get()
当使用while(cin.get(c) != '\n')
时,则每次读取一个字符
注意:第二种不标准,通常使用第一种
输出格式
put(char c)和write(const char *c, int n)对比
put用于输出单个字符,write用于指定输出的字符串长度然后截取字符串输出
setw(n)与setfill(char c)配合使用
setw用于在开头/中间设置n个空格,配合setfill(char c)用符号填充剩下的空格
对齐
默认的是右对齐
- left:左对齐,不够的用setfill(char c)设置的字符填充
- right:右对齐,不够的用setfill(char c)设置的字符填充
精度和小数有效位数
setprecision(n),n大于该小数的有效位数后,在末尾加0,若没有添加showpoint,无法输出末尾的0
注意:showpoint设置一次后下面接着的cout语句也可以对该格式生效
进制显示
setbase(n)或dec(10),hex(16),oct(8),要在设置showbase后才可以显示进制前缀(设置一次后接下来的cout也对该格式生效)
文件流
- ofstream输出文件流:创建文件并向文件写入信息
- ifstream输入文件流:用于从文件读取数据
- fstream文件流:同时具有读写两种功能
打开文件open
open函数是fstream,ofstream,ifstream对象的方法void open(const char *filename, ios::openmode mode);
mode为打开文件方式,有以下几种
ios::in | 以读方式打开 |
---|---|
ios::out | 以写方式打开 |
ios::binary | 以二进制方式打开 |
可用|分隔多种打开方式
写入和读取文件
- 用流插入(<<)向文件写入信息
- 用流提取(>>)从文件提取信息
读取和写入字符
- 单个:参考前面的put和get函数
- 多个:参考前面的write函数,write(const char *c, int n)
定位
seekp(int n)将读写指针定位到第n个字节