C++ getline函數(shù)用法詳解
雖然可以使用 cin 和 >> 運(yùn)算符來輸入字符串,但它可能會導(dǎo)致一些需要注意的問題。
當(dāng) cin 讀取數(shù)據(jù)時,它會傳遞并忽略任何前導(dǎo)白色空格字符(空格、制表符或換行符)。一旦它接觸到第一個非空格字符即開始閱讀,當(dāng)它讀取到下一個空白字符時,它將停止讀取。以下面的語句為例:
cin >> namel;
可以輸入 "Mark" 或 "Twain",但不能輸入 "Mark Twain",因?yàn)?cin 不能輸入包含嵌入空格的字符串。下面程序演示了這個問題:
// This program illustrates a problem that can occur if // cin is used to read character data into a string object. #include <iostream> #include <string> // Header file needed to use string objects using namespace std; int main() { string name; string city; cout << "Please enter your name: "; cin >> name; cout << "Enter the city you live in: "; cin >> city; cout << "Hello, " << name << endl; cout << "You live in " << city << endl; return 0; }
程序輸出結(jié)果:
Please enter your name: John Doe
Enter the city you live in: Hello, John
You live in Doe
請注意,在這個示例中,用戶根本沒有機(jī)會輸入 city 城市名。因?yàn)樵诘谝粋€輸入語句中,當(dāng) cin 讀取到 John 和 Doe 之間的空格時,它就會停止閱讀,只存儲 John 作為 name 的值。在第二個輸入語句中, cin 使用鍵盤緩沖區(qū)中找到的剩余字符,并存儲 Doe 作為 city 的值。
為了解決這個問題,可以使用一個叫做 getline 的 C++ 函數(shù)。此函數(shù)可讀取整行,包括前導(dǎo)和嵌入的空格,并將其存儲在字符串對象中。
getline 函數(shù)如下所示:
getline(cin, inputLine);
其中 cin 是正在讀取的輸入流,而 inputLine 是接收輸入字符串的 string 變量的名稱。下面的程序演示了 getline 函數(shù)的應(yīng)用:
// This program illustrates using the getline function //to read character data into a string object. #include <iostream> #include <string> // Header file needed to use string objects using namespace std; int main() { string name; string city; cout << "Please enter your name: "; getline(cin, name); cout << "Enter the city you live in: "; getline(cin, city); cout << "Hello, " << name << endl; cout << "You live in " << city << endl; return 0; }
程序輸出結(jié)果:
Please enter your name: John Doe
Enter the city you live in: Chicago
Hello, John Doe
You live in Chicago
到此這篇關(guān)于C++ getline函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)C++ getline函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程
這篇文章主要介紹了vscode配置遠(yuǎn)程開發(fā)環(huán)境并遠(yuǎn)程調(diào)試運(yùn)行C++代碼的教程,本文通過截圖實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04C++實(shí)現(xiàn)一維向量旋轉(zhuǎn)算法
這篇文章主要介紹了C++實(shí)現(xiàn)一維向量旋轉(zhuǎn)算法,非常實(shí)用的經(jīng)典算法,需要的朋友可以參考下2014-08-08使用C++實(shí)現(xiàn)Excel文件與CSV之間的相互轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)Excel文件與CSV之間的相互轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-06-06