一、基本介绍
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/n/142929.html