写这个内容的博客是因为参加大学生程序设计大赛的时候,经常需要用到一些格式化输出的知识,当时真的学的贼烦,怎么一个输出格式化还要背似的
C++中把输入输出当作字节流
cin:
常见用法我就不一一赘述了,主要讲一下cin的实现机制,我们系统中有三个常量,std_in,std_out,std_err这些分别是标准输入流,标准输出流,标准错误输出流。
cin对象对应的就是标准输入流,这个流被关联到标准输入设备(通常为键盘)。cin对应的其实是读取的动作,在流中进行读取的动作。比如我们键盘输入了东西,cin>>a;就是将流关联到键盘输入设备,键盘键入的字符保存在这个流中,然后cin在这个流里面读取,发现我们键盘键入的一些字符啥的,然后就把这些东西读取出来写到a中了。
cin里面还有更多的细节,比如很让人头痛的回车换行符怎么进行读取,还是丢弃。
我们可以用getline来进行行读取,cin.getline()会自动将换行符丢弃,也可以用cin.get()来讲换行符给去掉,展开讲还真是多呢。连续调用两次cin.get(var,size);将会将第一次流中的换行符留在输入队列中,所以这段代码将无法跳出来,因为们一直换行,总是将上一次的换行符留在输入队列中
cout:
cout对象对应的是标准输出流,这个流被关联到标准输出设备(通常为显示器)。cout对应的其实是写入的动作,如cout<<a;其实就是将a的内容放在流中,因为cout是与标准输出设备相关联的,所以cout将流中的内容写到标准输出设备中,也就是打印在显示器上。
C++只是检查字节流,而不需要知道字节流来自何方,将输入源与流连接,输入源可以是文件,设备,或者另一个程序的输出结果。所以就有文件流和输入输出流的区别