程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++基礎知識 >> C++ get()函數讀入一個字符

C++ get()函數讀入一個字符

編輯:C++基礎知識
get()函數是cin輸入流對象的成員函數,它有3種形式:無參數的,有一個參數的,有3個參數的。

關於cin輸入流的更多信息請查看:與C++輸入輸出有關的類和對象 和 C++ cin輸入流詳解

1) 不帶參數的get函數
其調用形式為
    cin.get()
用來從指定的輸入流中提取一個字符(包括空白字符),函數的返回值就是讀入的字符。 若遇到輸入流中的文件結束符,則函數值返回文件結束標志EOF(End Of File),一般以-1代表EOF,用-1而不用0或正值,是考慮到不與字符的ASCII代碼混淆,但不同的C ++系統所用的EOF值有可能不同。

[例13.6] 用get函數讀入字符。
#include <iostream>
using namespace std;
int main( )
{
   int c;
   cout<<"enter a sentence:"<<endl;
   while((c=cin.get())!=EOF)
      cout.put(c);
   return 0;
}
運行情況如下:
enter a sentence:
I study C++ very hard.↙(輸入一行字符)
I study C++ very hard.              (輸出該行字符)
^Z↙(程序結束)

C語言中的getchar函數與流成員函數cin.get( )的功能相同,C++保留了C的這種用法,可以用getchar(c)從鍵盤讀入一個字符賦給c。

2) 有一個參數的get函數
其調用形式為
    cin.get(ch)
其作用是從輸入流中讀取一個字符,賦給字符變量ch。如果讀取成功則函數返回true(真),如失敗(遇文件結束符) 則函數返回false(假)。例13.6可以改寫如下:
#include <iostream>
using namespace std;
int main( )
{
   char c;
   cout<<"enter a sentence:"<<endl;
   while(cin.get(c))  //讀取一個字符賦給字符變量c,如果讀取成功,cin.get(c)為真
   {cout.put(c);}
   cout<<"end"<<endl;
   return 0;
}

3) 有3個參數的get函數
其調用形式為
    cin.get(字符數組, 字符個數n, 終止字符)

    cin.get(字符指針, 字符個數n, 終止字符)
其作用是從輸入流中讀取n-1個字符,賦給指定的字符數組(或字符指針指向的數組),如果在讀取n-1個字符之前遇到指定的終止字符,則提前結束讀取。如果讀取成功則函數返回true(真),如失敗(遇文件結束符) 則函數返回false(假)。再將例13.6改寫如下:
#include <iostream>
using namespace std;
int main( )
{
   char ch[20];
   cout<<"enter a sentence:"<<endl;
   cin.get(ch,10,'\\n');//指定換行符為終止字符
  cout<<ch<<endl;
   return 0;
}
運行情況如下:
enter a sentence:
I study C++ very hard.↙
I study

在輸入流中有22個字符,但由於在get函數中指定的n為10,讀取n -1個(即9個)字符並賦給字符數組ch中前9個元素。有人可能要問:指定n-10,為什麼只讀取9個字符呢?因為存放的是一個字符串,因此在9個字符之後要加入一個字符串結束標志,實際上存放到數組中的是10個字符。請讀者思考:如果不加入字符串結束標志,會 出現什麼情況?結果是:在用“cout<<ch”;輸出數組中的字符時,不是輸出讀入的字符串,而是數組中的全部元素。大家可以親自測試一下ch[9](即數組中第10個元素)的值是什麼。

如果輸入↙
    abcde
即未讀完第9個字符就遇到終止字符、讀取操作終止,前5個字符已存放到數組ch[0]到ch[4]中,ch[5]中存放'\0'。

如果在get函數中指定的n為20,而輸入22個字符,則將輸入流中前19個字符賦給字符數組ch中前19個元素,再加入一個'\0'。

get函數中第3個參數可以省寫,此時默認為'\n'。下面兩行等價:
    cin.get(ch,10,'\\n');
    cin.get(ch,10);
終止字符也可以用其他字符。如
    cin.get(ch,10,'x');
在遇到字符'x'時停止讀取操作。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved