C++ cin.get用法案例詳解
與字符串輸入一樣,有時候使用 cin>> 讀取字符也不會按我們想要的結(jié)果行事。
例如,因為它會忽略掉所有前導(dǎo)白色空格,所以使用 cin>> 就不可能僅輸入一個空格或回車符。除非用戶輸入了空格鍵、制表符之外的其他字符,否則程序?qū)⒉豢赡芡ㄟ^ cin 語句繼續(xù)執(zhí)行(一旦輸入了這樣的字符,在程序可以繼續(xù)下一個語句之前,仍然需要按回車鍵)。因此,要求用戶“按回車鍵繼續(xù)”的程序,不能使用 >> 運算符只讀取按回車鍵的行為。
在這些情況下,cin 對象有一個名為 get 的內(nèi)置函數(shù)很有幫助。因為 get 函數(shù)是內(nèi)置在 cin 對象中的,所以可稱之為 cin 的一個成員函數(shù)。get 成員函數(shù)讀取單個字符,包括任何白色空格字符。如果程序需要存儲正在讀取的字符,則可以通過以下任意一種方式調(diào)用 get 成員函數(shù)。
在這兩個例子中,假設(shè) cin 是正被讀入字符的 char 變量的名稱:
cin.get (ch);
ch = cin.get();
如果程序正在使用 get 函數(shù)簡單地暫停屏幕直到按回車鍵,并且不需要存儲字符,則該函數(shù)也可以這樣調(diào)用:
cin.get();
請注意,在所有這 3 個編程語句中,get 函數(shù)調(diào)用的格式實際上是一樣的。首先是對象的名稱,在此示例中它是 cin。然后是一個句點,其后是被調(diào)用的成員函數(shù)的名稱,在這里當(dāng)然就是 get。語句的末尾是一組括號和一個表示結(jié)束的分號。這是調(diào)用任何成員函數(shù)的基本格式,如圖 1 所示。

圖 1 成員函數(shù)調(diào)用的基本格式
下面的程序演示了使用 get 成員函數(shù)的所有 3 種方式:
// This program demonstrates three ways to use cin.get()
// to pause a program.
#include <iostream>
using namespace std;
int main()
{
char ch;
cout << "This program has paused. Press Enter to continue.";
cin.get(ch);
cout << "It has paused a second time. Please press Enter again."; ch = cin.get();
cout << "It has paused a third time. Please press Enter again.";
cin.get();
cout << "Thank you! \n";
return 0;
}
程序輸出結(jié)果:
This program has paused. Press Enter to continue.
It has paused a second time. Please press Enter again.
It has paused a third time. Please press Enter again.
Thank you!
注意,在 IDE 中運行程序時,當(dāng)程序終止,則輸出窗口會關(guān)閉,而 cin.get 函數(shù)可用于保持輸出屏幕可見。
混合使用 cin>> 和 cin.get
將 cin >> 與 cin.get 混合使用可能會導(dǎo)致煩人且難以發(fā)現(xiàn)的問題。請看下面的代碼段示例:
char ch; //定義一個字符變量 int number; //定義一個整型變量 cout << "Enter a number: ”; cin >> number; // 讀取整數(shù) cout << "Enter a character: "; ch = cin.get() ; // 讀取字符 cout << "Thank You!\n";
這些語句允許用戶輸入一個數(shù)字,而不是一個字符??磥淼?6 行的 cin.get 語句已經(jīng)被跳過了。這是因為 cin>> 和 cin.get 使用略有不同的技術(shù)來讀取數(shù)據(jù)。
在示例代碼段中,當(dāng)執(zhí)行第 4 行時,用戶輸入一個數(shù)字,然后按回車鍵。假設(shè)輸入的是數(shù)字 100。按回車鍵會導(dǎo)致一個換行符('\n')存儲在鍵盤緩沖區(qū)數(shù)字 100 之后,如圖 2 所示。

圖 2 鍵盤緩沖區(qū)存儲和讀取示意圖
當(dāng)?shù)?4 行中的 cin>> 語句讀取用戶輸入的數(shù)據(jù)時,它會在遇到換行符時停止。換行字符未被讀取,而是仍保留在鍵盤緩沖區(qū)中。從鍵盤讀取數(shù)據(jù)的輸入語句只在鍵盤緩沖區(qū)為空時等待用戶輸入值,但現(xiàn)在不為空。
當(dāng)?shù)?6 行中的 cin.get 函數(shù)執(zhí)行時,它開始從先前輸入操作停止的鍵盤緩沖區(qū)讀取,并發(fā)現(xiàn)了換行符,所以它無須等待用戶輸入另一個值。這種問題最直接的解決辦法是使用 cin.ignore 函數(shù)。
到此這篇關(guān)于C++ cin.get用法案例詳解的文章就介紹到這了,更多相關(guān)C++ cin.get用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于VS2019 C++項目同時出現(xiàn)LNK2005 和LNK1169 error 的解決辦法
這篇文章主要介紹了關(guān)于VS2019 C++項目同時出現(xiàn)LNK2005 和LNK1169 error 的解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
C語言實例真題講解數(shù)據(jù)結(jié)構(gòu)中單向環(huán)形鏈表
鏈表可以說是一種最為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)了,而單向鏈表更是基礎(chǔ)中的基礎(chǔ)。鏈表是由一組元素以特定的順序組合或鏈接在一起的,不同元素之間在邏輯上相鄰,但是在物理上并不一定相鄰。在維護一組數(shù)據(jù)集合時,就可以使用鏈表,這一點和數(shù)組很相似2022-04-04
C 標(biāo)準(zhǔn)I/O庫的粗略實現(xiàn)教程
下面小編就為大家分享一篇C 標(biāo)準(zhǔn)I/O庫的粗略實現(xiàn)教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

