一、基本介紹
c++ getline是一種用於從輸入流中獲取一行文本的函數。它具有靈活、易用的特點,可以支持多種輸入流類型,包括標準輸入、文件以及字符串等。該函數可以幫助程序員處理各種數據格式的輸入,是c++輸入輸出中一個使用頻率非常高的函數。
二、函數原型與參數
c++ getline函數的原型如下:
istream& getline (istream& is, string& str, char delim);
其中,istream表示輸入流類型,string表示存儲輸入文本的字符串變量,delim表示文本分隔符,通常為換行符,也可以自定義其他分隔符。
三、使用示例
1. 從標準輸入中讀取一行文本
#include
#include
using namespace std;
int main()
{
string line;
getline(cin, line);
cout << "輸入的內容為:" << line << endl;
return 0;
}
運行程序後,程序會等待用戶輸入一行文本,然後把文本存放進line變量中,並輸出到控制台上。
2. 從文件中讀取多行文本
#include
#include
#include
using namespace std;
int main()
{
ifstream file("data.txt");
if (!file.is_open())
{
cout << "文件打開失敗!" << endl;
return 1;
}
string line;
while(getline(file, line))
{
cout << line << endl;
}
file.close();
return 0;
}
該程序使用ifstream類型打開data.txt文件,並通過getline函數逐行讀取文件內容,並輸出到控制台上。
3. 使用分隔符獲取單詞
#include
#include
#include
using namespace std;
vector split(string str, char delim)
{
vector result;
string word;
stringstream ss(str);
while (getline(ss, word, delim))
{
result.push_back(word);
}
return result;
}
int main()
{
string sentence = "hello,world,i,am,your,friend!";
vector words = split(sentence, ',');
cout << "分隔後的單詞為:" << endl;
for (auto word : words)
{
cout << word << endl;
}
return 0;
}
該程序使用自定義分隔符逐個獲取單詞,通過調用split函數,並將單詞存儲在vector容器中,最後輸出到控制台上。
四、常見問題
1. 如何避免讀取空行?
可以使用getline函數後判斷讀取的內容是否為空,如果為空,則說明讀取到了空行,可以使用continue語句繼續讀取下一行。
string line;
while (getline(file, line))
{
if (line.empty()) continue;
}
2. 如何使用getline函數讀取空格?
getline函數默認以換行符為分隔符,如果需要讀取包含空格的文本,可以設置分隔符為空格:
string str; getline(cin, str, ' ');
這樣,就可以讀取到包含空格的文本字符串。
3. 如何更改getline函數的默認分隔符?
可以使用istream類的成員函數getline(char*, streamsize, char)來更改默認分隔符。例如,下面的示例將把’\n’替換為’;’符號:
#include
#include
using namespace std;
int main(void)
{
char str[] = "A;B;C\nD;E;F\nG;H;I";
char *token;
token = strtok(str, ";");
while (token != NULL) {
cout << token << endl;
token = strtok(NULL, ";");
}
return 0;
}
在該程序中,先使用c函數strtok將str分割為token,其分隔符為分號’;’,然後從中篩選需要的信息。
原創文章,作者:OZHM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/142929.html
微信掃一掃
支付寶掃一掃