輸入
在以下的程式碼中,宣告了整數a、字元b、浮點數c、與字串d。
並將其讀入。
1 | int a; |
cin的語法很特殊,總之像上面那樣,注意不要打成<<,也不要在中間加入無用空格,像這樣:
1 | //錯誤示範 |
當然,不一定要將輸入的東西全部擠成一行,可以寫作如下形式,效果相同:
1 | cin>>a; |
如果輸入了不合法的東西,程式會有不正常的反應,如:
1 | int x; |
這時,若輸入abc,由於abc並非整數,因此x將不會讀入任何值。
輸出
1 | int a; |
跟cin語法基本相同,但箭頭相反方向。
注意事項
若用上方程式碼輸入這行,得到的輸出會是什麼呢?
1 | 45 a 5.25 sfdljkg |
答案是:
1 | 45a5.25sfdljkg |
壞掉了嗎?並沒有,那為什麼空白不見了?
原因是cin會自動忽略所有不可見字元,包含空格以及換行字元。
因此,只要確實分離,不論輸入是這樣:
1 | 45 a 5.25 sfdljkg |
這樣:
1 | 45 a 5.25 sfdljkg |
還是這樣:
1 | 45 a |
程式都能夠正確讀取!
cin如何運作
1 | int x; |
若我輸入123abc,程式運行結果會是如何?
答案是:
1 | 123 |
因此,cin一個整數時,程式會一直讀取直到下一個位置的字元不是數字為止!
因此,若上方的輸入為:
1 | 45a5.25sfdljkg |
首先,整數讀入45後停止,字元讀入一個字元’a’後停止,浮點數讀入5.25後停止,字串讀入至行尾停止。
因此,在這個範例裡,輸出結果跟原來一模一樣!
1 | 45a5.25sfdljkg |
那 怎麼輸出空格?
輸出一個空白字元,或者一個含一個空白的字串,接著將其輸出!
1 | int a = 10; |
1 | 10 12 |
這麼麻煩嗎?
其實,輸出的東西,不一定要是變數!
1 | cout<<10<<' '<<12<<"hello!"<<'\n'; |
1 | 10 12 hello! |
對比:cin的輸入對象一定要是變數,不然你輸入進來要存在哪裡?
因此,若要以空格分隔上方輸出,上方程式碼可改寫為:
1 | int a; |
練習
再次提醒,行尾要輸出換行字元’\n’!
AC Code
1 | // TOJ 92 |
1 | // TOJ 519 |
1 | // TOJ 520 |
備註
有另外一種輸入輸出方法:scanf / printf,與cin/cout功能相同,若有興趣可自行查詢相關資源。