c 中cin與cout 詳解

2021-06-09 04:12:37 字數 3269 閱讀 3694

cin與cout

一:標準輸入函式cin

不知道說它是個函式對還是不對,它是代表標準的輸入裝置--鍵盤。他是屬於流的,他的用法和流的用法是一樣的。也就是:cin>>變數;

小小的說明一下,輸入多個變數可以寫在一行,如:cin>>x>>y>>z;

這樣寫不是不允許,而是不好看,如果是不同的變數型別,那就更是沒頭沒腦了。除了你,人家是不知道該輸入什麼的,所以,一般在輸入語句的前面,我們一般都

要做乙個提示,請輸入×××,讓人家心裡有個底,知道這個變數是做什麼的。

另外,這個函式是不用帶位址符號"&"的,也不用寫明變數型別,千萬不要跟scanf混淆。當然他就也不檢查變數輸入是否合法。如:

int i;

cout<<"please input a number:"

cin>>i;

cout<<"i="<

如果你輸入的是乙個字元如'a'那麼他也不檢查,但你輸出的結果不是正確的,這要是手工進行檢查。當然他也跟scanf一樣,如果在迴圈內部輸入不合法的變數值,那麼也將陷入死迴圈。如下:

/*乙個輸入不合法變數陷入死迴圈的例子*/

#include

main() }

如上乙個程式,如果你輸入的不合法,那就將陷入死迴圈。解決的辦法有個一,把cin>>i;語句移到判斷迴圈的語句中,那麼,你輸入的如果是不合法的變數,他將跳出迴圈。

cin是用空格來分隔輸入的。請看看如下的例子:

/*乙個空格分隔使輸入的變數達不到希望的值*/

#include

main()

看得到是什麼結果呢?得到的僅僅是str=hello,為什麼呢?因為cin是以空格為分隔的,當你輸入乙個空格時,那他就認為後面的輸入不屬於這裡了,

認為應該給後面的變數了。另外,當你輸入的字串大於分配的空間時,還會出現溢位現象。當然,還有整行輸入的函式,包括空格也一起輸入了,以後也會學到。

二、標準輸出函式cout

說cout是函式,也跟cin一樣,不知道對不對。他代表的是標準輸出裝置--顯示器。其實前面已經用過很多次這個函式了。我們就通過乙個例子來進行格式化的輸出就是了,大家就體會體會這個例子就行了,比printf靈活了很多。

首先,我們可以按16進製制,8進製和10進製來顯示我們的資料,如下:

/*乙個按進製輸出的例子*/

#include

void main()

我們用cout.setf()設定輸出的格式,用cout.unsetf()取消格式。可以看出10進製在輸出的時候不管有沒有設定基指示符ios::

showbase,都沒用,8進製再輸出的時候在前面加0,而16進製制是在前面加0x。而對於數值中字母大寫輸出,只對16進製制有用,以後我們就應該看情

況使用了。當然,我們前面已經說了,還有一種方法也可以實現格式化輸出,那就是使用操縱運算元,如下,

/*乙個按進製輸出的例子*/

#include

void main()

我們用以上的程式也可以輸出同樣的結果,可見他的靈活。我們現在輸出下列一段文字:

第一章

1.1 什麼是c語言...........................1

1.11 c語言的歷史..........................58

第二章

方法很多種啦,我們可以這樣寫:

/*乙個使用填充,寬度,對齊方式的例子*/

#include

void main()

我們多次設定了寬度,為的是使我們的間距能一致,也使用了對齊方式,為的是使我們的資料能對齊顯示,看起來美觀。我們還使用了填充方式。我們下面用操縱運算元來實現也是可以的。

/*乙個使用填充,寬度,對齊方式的例子*/

#include

void main()

我們輸出了同樣的效果,不過依我的性格,我更喜歡用操縱運算元來進行格式化輸出。最後我們看看浮點數的格式輸出,如下例:

/*關於浮點數的格式*/

#include

void main()

同樣,我們也一樣能用操縱運算元實現同樣的功能:

/*關於浮點數的格式*/

#include

void main()

在c/c++系統中除了標準的輸入輸出外,還提供了更多的輸入函式。這寫函式主要有getch(),getche(),

getchar

(),cin.get(),putch(),putchar(),cout.put(),gets(),cin.getline(),puts()。另外

還有些為了讓緩衝區不影響程式的正確操作的緩衝去的操作,如:cin.putback(),fflush(stdin),cout.flush().我們

做一下簡單的說明。

1、getch()和getche(),非緩衝式輸入,從鍵盤讀入乙個字元。getch()讀入字元不顯示。有conio.h支援。

2、cin.get(),getchar(),緩衝式輸入,從鍵盤讀入乙個字元,並顯示。getchar()由stdio.h支援,cin.get()由iostream.h支援。

3、putch()和putchar(),非緩衝式輸出,輸出乙個字元到顯示器。putch()由conio.h支援,putchar()由stdio.h支援。

4、cout.put(),緩衝式輸出,輸出乙個字元到顯示器。由iostream.h支援。

5、gets()和cin.geline(),緩衝式輸入,讀入一字串(包括空格,不包括最後的回車),gets()由stdio.h支援,cin.getline()由iostream.h支援。

6、puts(),非緩衝輸出,輸出乙個字串,由stdio.h支援。

7、cin.putback(),把乙個字元送回輸入緩衝區。

8、fflush(stdin),清除輸入緩衝區操作。無法清除cin.get()等帶來的操作。

9、cout.flush(),清楚輸出緩衝區。

在這裡我們稍微說一下輸入/輸出緩衝區,這是為了減少程式訪問io帶來中斷而設的一段空間。當程式滿足某個重新整理條件時,那就將清理緩衝區。具體條件為:

1、輸入緩衝區

a,程式要求輸入時,按下了回車鍵。

b,遇到程式結束。

c,遇到下一條輸入語句。

d,遇到清除緩衝區操作

e,緩衝區溢位

2、輸出緩衝區

a,輸出緩衝區溢位

b,遇到下一條輸入語句

c,使用重新整理緩衝區迫使清除

d,程式結束。

緩衝區操作有時會帶來程式的不正確的輸入,如前面說的scanf(),在連續輸入的時候,會把乙個回車賦給下乙個字元變數。我們操作的時候一定要注意。

C與C 學習 cin與cout

二 cout 總結cin與cout是c 中的輸入和輸出函式,使用時需要新增標頭檔案 include iostream 和 using namespace std 相比c語言 cin 與 cout 不需要像 scanf 和 printf 那樣指定輸入和輸出格式,也不需要取位址運算子 就可以直接輸入或輸...

C 輸入cout與輸出cin

輸入和輸出並不是c 語言中的正式組成成分。c和c 本身都沒有為輸入和輸出提供專門的語句結構。輸入輸出不是由c 本身定義的,而是在編譯系統提供的i o庫中定義的。c 的輸出和輸入是用 流 stream 的方式實現的。圖3.2和圖3.3表示c 通過流進行輸入輸出的過程。有關流物件cin cout和流運算...

C 輸入cout與輸出cin

輸入和輸出並不是c 語言中的正式組成成分。c和c 本身都沒有為輸入和輸出提供專門的語句結構。輸入輸出不是由c 本身定義的,而是在編譯系統提供的i o庫中定義的。c 的輸出和輸入是用 流 stream 的方式實現的。圖3.2和圖3.3表示c 通過流進行輸入輸出的過程。有關流物件cin cout和流運算...