1. 程式人生 > >c++輸入

c++輸入

指定 std happy 訪問 -s sent div tab鍵 註意

#include <iostream>
using namespace std;
int main( )
{
   char ch[20];
   cout<<"enter a sentence:"<<endl;
   cin>>ch;
   cout<<"The string read with cin is:"<<ch<<endl;
   cin.getline(ch,20,‘/‘);  //讀個字符或遇‘/‘結束
   cout<<"The second part is:"<<ch<<endl;
   cin.getline(ch,20);  //讀個字符或遇‘/n‘結束
   cout<<"The third part is:"<<ch<<endl;
   return 0;
}

Input

I like C++./I study C++./I am happy.

output

enter a sentence:

I like C++./I study C++./I am happy.
The string read with cin is:I
The second part is: like C++.
The third part is:I study C++./I am h

1、用“cin>>”從輸入流提取數據,遇空白字符(包括空格、tab鍵、回車鍵)就終止。

2、cin.getline(ch, 20, ‘/‘)從輸入流讀取19個字符 (或遇/結束)。

請註意:此時並不是從輸入流的開頭讀取數據。在輸入流中有一個字符指針,指向當前應訪問的字符。在開始時,指針指向第一個字符,在讀入第一個字符‘I‘ 後,指針就移到下一個字符(‘I‘後面的空

格), 所以getline函數從空格讀起,遇到就停止,把字符串" like c++."存放到ch[0]開始的10個數組元素中,然後用"cout<<ch"輸出這10個字符。註意:遇終止標誌字符"/"時停止讀取並 不放到數組中。

3、用cin.getline(ch, 20)讀19個字符(或遇‘/n‘結束),由於未指定以‘/‘為結束標誌,所以第2個‘/‘被當作一般字符讀取,共讀入19個字符,最後輸出這19個字 符。

4、get與getline區別不是很大,但一個明顯的區別是get遇到 ‘\n ‘字符後便返回,這是 ‘\n ‘還在緩沖區中,所以下次讀出來的將是 ‘\n ‘,而getline遇到 ‘\n ‘也返回,但它會把 ‘\n ‘從緩沖區裏移除掉

  (詳情見隨筆get與getline的區別)
有幾點說明並請讀者思考:
1) 如果第2個cin.getline函數也寫成cin. getline(ch, 20, ‘/‘‘),輸出結果會如何? 此時最後一行的輸出為:
The third part is: I study C++.

2) 如果在用cin.getline(ch, 20, ‘/‘)從輸入流讀取數據時,遇到回車鍵("\n"),是否 結束讀取?

  結論是此時"\n"不是結束標誌"\n"被作為一個字符被讀入。

3) 用getline函數從輸入流讀字符時,遇到終止標誌字符時結束,指針移到該終止標誌字符之後,下一個getline函數將從該終止標誌的下一個字符開始 接著讀入,如本程序運行結果所示那樣。如果用cin.get函數從輸入流讀字符時,遇終止標誌字符時停止讀取,指針不向後移動,仍然停留在原位置。下一次 讀取時仍從該終止標誌字符開始。這是getline函數和get函數不同之處。假如把例13.7程序中的兩個cin.line函數調用都改為以下函數調 用:
cin.get(ch, 20, ‘/‘);
則運行結果為:
enter a sentence: I like C++./I study C++./I am happy.↙
The string read with cin is: I
The second part is: like C++.
The third part is: (沒有從輸人流中讀取有效字符)

第2個cin.get(ch, 20, ‘/‘);從指針當前位置起讀取字符,遇到的第1個字符就是終止標誌字符讀入結束,只把"\0"存放到ch[0]中,所以用“cout<<ch”輸出時無字符輸出。

因此用get函數時要特別註意,必要時用其他方法跳過該終止標誌字符(如用後面介紹的ignore函數,詳情請查看:下一條),但一般來說還是用getline函數更方便。


4)cin.ignore(a,ch)方法是從輸入流(cin)中提取字符,提取的字符被忽略,不被使用。每拋棄一個字符,它都要計數和比較字符:如果計數值達到a或者被拋棄的字符是ch,則cin.ignore()函數執行終止;
5) 請比較用“cin<<”和用成員函數cin.getline()讀數據的區別。用“cin<<”讀數據時以空白字符(包括空格、 tab鍵、回車鍵)作為終止標誌,而用cin.getline()讀數據時連續讀取一系列字符,可以包括空格。用“cin <<”可以讀取C++的標準類型的各類型數據(如果經過重載,還可以用於輸入自定義類型的數據),而用cin.getline()只用於輸入 字符型數據

c++輸入