從乙個小程式說起2
要求:編寫乙個程式,要求使用者輸入一串整數和任意數目的空格,這些整數必須位於同一行中,但允許出現在該行中的任何位置。當使用者按下鍵盤上的「enter」鍵時,資料輸入結束。程式自動對所有的整數進行求和並列印出結果。
c語言版本:
1 #include 2 #include 3view code4void
main()523
24 ungetc( ch, stdin ); //
將變數ch 中存放的字元退回給stdin輸入流。25}
2627 printf("
結果是: %d
", sum);
28 printf("\n"
);29 system("
pause");
30 }
c++語言版本:
1 #include 2view code3using
namespace
std;45
intmain()620
if( cin.peek() == '\n'
)2124}
2526 cout << "
½á¹ûêç:
"<< sum <
2728
return0;
29 }
這個程式使用了流物件 cin。這個物件的型別是istream,它知道如何從使用者終端讀取資料。
cin >> i;
cin 輸入操作符又稱為提取操作符,它一次從輸入流物件cin 提取乙個整數。
當使用者進行鍵盤輸入時,對應的字元將輸入到作業系統的鍵盤緩衝區中。
這樣,當使用者點選鍵盤上的「enter」鍵時,作業系統把鍵盤緩衝區的內容傳輸到cin 流的內部緩衝區,「>>」操作符隨後從這個緩衝區提取需要的資訊。
我們還發覺,如果使用者不進行鍵盤的輸入,程式將會阻塞。這是阻塞性(blocking)io的例子。
「>>」最初定義為右移操作符,它在c++ 中進行了過載,當它按照這裡所示的方式使用時,它就用於從輸入流物件提取資訊。
另外,這個操作符對所有內建的資料型別都進行了過載,所以它可以從輸入流物件提取出int, float, double 型資料,也可以提取字串等資料。
在while( cin >> i ) 中,表示式 cin >> i 返回輸入流物件本身,也就是cin。但是,如果到達了檔案尾或者提取操作符遇到乙個非法值,這個返回值將是 false。
我們小舉乙個例子:如果我們試圖把乙個浮點數讀取到乙個 int 型變數中,當提取操作符遇到小數點時,它將使輸入流物件置於乙個錯誤的狀態中,導致 cin 的值為 false。
注意,在while( cin >> i ) 中,當使用者在鍵盤上點選「enter」鍵的時候,在這一句並不會結束。
另外,觀察兩個程式,我們發現:c 和 c++事實上在宣告變數的事實上有點不同,c++允許我們在程式的任意位置宣告變數。
這大大的提高了大型c++ 程式的可讀性,因為這樣子我們就可以在實際需要使用變數的時候才來宣告他們。
前邊我們講過,cin 是 istream類的物件,那麼cin 同樣具有一些方法,這些方法可以增強對於輸入操作的控制,下邊我們將通過簡單的例子介紹 cin 的一些方法!
例子一:cin.ignore()和cin.getline()
1 #include 2例子二:cin.get()和cin.peek()3using
namespace
std;45
intmain()
6
1 #include 2例子三:cin.gcount()和cin.read()3using
namespace
std;45
intmain()
615 cout <
1617
return0;
18 }
1 #include 2前邊我們已經介紹了幾種常用的 cin 物件的方法,下邊再介紹幾種關於 cout 物件的方法。同樣我們通過例項在讓大家快速認識!3using
namespace
std;45
intmain()
6
例項一:cout.precision()
1 #include 2 #include 3例項二:cout.width()4using
namespace
std;56
intmain()717
18 cout << "
當前的輸出精度為:
"<< cout.precision() <
1920
return0;
21 }
1 #include 23using
namespace
std;45
intmain()619
20return0;
21 }
小甲魚 C 3 從乙個程式說起
www.fishc.com include 對乙個整型陣列求和 int addarray int array,int n int main int size sizeof data sizeof int int size sizeof data sizeof data 0 printf 結果是 d ...
C 學習筆記 004 從另乙個小程式說起
include include using namespace std 將乙個檔案複製到另乙個檔案 int file copy main char x while in x cout endl in.close return 0 將鍵盤輸入的資訊存入檔案 int str to file main f...
mybatis快取,從乙個「靈異」事件說起
talk is cheap.show me the code.該問題涉及的主要 實現包括 listlistgoodstrack param criteria goodstrackquerycriteria criteria 2.xml定義 select 3.service定義 service tra...