_浅谈cin&cout

       在C语言中,我们常用scanf和printf函数来进行输入和输出,scanf和printf是库函数,在使用时要包含头文件<stdio.h>。

       例如,我们常常编写这样的函数:

        如上的程序奔溃了,为什么呢?因为我们的数组中只能包含30个字符,但是我们在输入的时候输入了超过30个字符,在我们不知道数组大小的情况下,这样的代码是很危险的,就是说,scanf函数是不安全的。

        也许读者会马上想到fgets函数:

fgets函数不但能够从我们输入的超过数组最大值的一段数据中截取29个字符,还能接受小于29个字符的数据:


在C++中为了解决scanf不安全的问题,发明了string字符串类型。

       可以看到string的颜色和int的颜色是不一样的,因为string是一个类对象。我们还可以看到string的最大值是1073741820,这个值足以大到一天都输不完。


在C语言的输入输出中对数据的类型有着严格的格式控制,相比C++来说是很不方便的:

       使用scanf函数,在给两个不同的变量赋值的时候我们常常用空格或Tab隔开,这样a和b分别被赋值1和2,但是在下面这种情况里:

       我们可以看到输入的d被吃掉了,因为空格也是一个字符,被赋给了d。

       我们来看看C++中的cin:

cin函数没有把空格赋给c,而是把我们输入的d赋给了c。


关于cout的格式控制:

       C语言中printf函数里的格式控制功能很强大,例如设置域宽及位数,按进制输出等,当然C++中也有这样的格式化控制,只是有点复杂而已。


1.设置域宽及位数

       setw设置了位宽,效果和printf函数里%5d一样。setprecision(n)能够设置有效位数,setprecision(n)和setiosflags(ios::fixed)一起使用能够设置小数点后的有效位数。


2.按进制输出

int i = 100;

cout<<dec<<i<<endl;//十进制

cout<<oct<<i<<endl;//八进制

cou<<hex<<i<<endl;//十六进制

默认输出十进制。


3.设置填充符



        

                                                                                                                    Kyrie Irving___全.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章