初学C++输入输出流
最近在学C++,简单总结一下,防止自己忘了,如果有不对的地方还请各位大佬多多赐教!
先简单说一下。
输出流:cout<<,cout为输出流,相当于屏幕显示。若想输出数据,只需将数据存放到输出流,屏幕即可显示想要输出的数据。
输入流:cin>>,cin为输入流,相当于键盘(键盘输入—键盘缓冲区—enter—内存缓冲区)。
一、输入流常用语句
1. cin>>ch(以空格或回车作为结束符,提取当前数据且不放回,不可提取空格或回车)
输入的所有数据会存放到cin输入流里面(包括整数、字符、空格、回车等),以回车、空格或tab作为结束符。
cin可理解为提取符,它是一个一个提取的,通过cin可将第一个结束符之前的数据提取出来给ch,那么提取出的这个数据就会从输入流中删除。
因此我们用get再提取输入流中数据的时候,当前数据就变为了空格或回车的结束符。因此为了能够继续读取下一个有效数据,我们可以使用cin.ignore(n),忽视n个字符,再提取时便是下一个有效数据了。
当然了,cin>>并不需要ignore空格或回车即可读取数据,因为它根本不会提取空格或回车。
2. cin.get();(只可提取输入流当前的一个字符(包括空格和回车)且不放回,只可提取一个字符)
-ch=cin.get()或cin.get(ch);从输入流cin中提取当前的一个字符给ch。
-cin.get(ch,5);从输入流cin中提取当前的4个字符给ch[5],最后一位用‘\0’结束,不显示。
-cin.get();提取当前的一个字符并丢掉。(示例中r被丢掉了)
3. cin.getline();(可提取一个字符串(包括空格和回车)且不放回,只可提取一个字符串)
注意:cin.getline()在提取字符串后,该行剩余的所有数据都会被清除。
-cin.getline(ch,5);从输入流cin中提取当前的一个长度为5的字符串(只包含4个字符)给ch[5]。类似cin.get(ch,5)。
-cin.getline(ch,5,’a’);从输入流cin中提取当前的一个长度是5的字符串给ch[5],若遇到’a则提前结束并将当前提取的数据(不包括’a’)给ch[5]。
4. getline();(提取一个字符串)
-getline(cin,ch);从输入流cin中提取当前的字符串给ch。
#include
string a;
getline(cin,a);
与cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是两个不一样的函数。
5. cin.ignore();(提取并忽略,一般用于舍弃空格或回车,进而提取有效数据)
-cin.ignore(n ,’\n’);忽略n次或遇到回车即停止忽略(舍弃),回车也会被舍弃。
-cin.ignore();不给参数,则默认cin.ignore(1,EOF),其中EOF(end of file)为文件结尾。相当于只忽略1次。
总结:拿的少,扔得多。
6. cin.gcount();(上一次输入时读入(get)的字符数,包括结束符’\0’)
7. cin.peek();(拿出来,判断一下,再放回去,不影响输入流数据)
-cin.peek();从输入流中提取出当前数据进行判断,完成操作后再放回输入流。
二、输出流常用语句
1. cout.write();(写字符串的前n个字符,且字符串ch定义为const char *ch)
-cout.write(ch,5);写出ch的前5个字符。
-cout.write(ch1,1).write(ch2,2).write(ch3,3);连续写出ch1的前1个字符,ch2的前2个字符,ch3的前3个字符。
2. cout.precision();(设定输出精度,也可理解为输出的有效数字个数,默认保留6位有效数字)
-cout.precision(n);输出数据有效数字个数为n个。
3. cout.width();(设定输出宽度,若设定值大于已有字符个数,则在前面用空格补齐(默认右对齐)。若设定值小于已有字符个数,则直接输出全部字符。字符为const char *ch)
-cout.width();不给参数,默认宽度为0。
-cout.width(n);设定输出宽度为n。
注意:第一次指定宽度并输出后,下次会默认输出宽度为0,此时若想输出指定宽度则必须重新指定。