getline() 是 C++ 标准库中的一个函数,用于从输入流中读取一行文本,并将其存储为字符串。它能够从标准输入、文件流、字符串流等不同类型的输入流中读取数据。本文将详细介绍 getline() 函数的定义、参数和实例应用。
getline() 函数在 C++ 标准库中有两种重载形式:
istream& getline (char* s, streamsize n);
istream& getline (istream& is, string& str, char delim);
其中第二种形式更为常用,因为它可以直接读取到 string 对象中。
is: 输入流对象,可以是 std::cin(标准输入)、文件流对象(std::ifstream)、字符串流对象(std::istringstream)等等。
str: 存储读取到的一行文本的 string 对象。
delim: 分隔符,表示在哪个字符处停止读取,默认为换行符 '
'。当遇到此分隔符时,读取操作将终止。
返回值通常是输入流对象的引用,通常为 is,表示函数成功执行。
以下是一些常见的使用示例,展示了如何使用 getline() 函数从不同的输入流中读取数据:
从标准输入中读取一行
#include
#include
using namespace std;
int main() {
string line;
cout << "Enter a line of text: ";
getline(cin, line);
cout << "You entered: " << line << endl;
return 0;
}
在这个例子中,程序会等待用户输入一行文本,然后将其显示出来。
从文件中读取一行
#include
#include
#include
using namespace std;
int main() {
ifstream file("example.txt");
string line;
if (file.is_open()) {
while (getline(file, line)) {
cout << line << endl;
}
file.close();
} else {
cout << "Unable to open file." << endl;
}
return 0;
}
该程序从名为 "example.txt" 的文件中逐行读取内容并输出到标准输出。
从字符串流中读取一行
#include
#include
#include
using namespace std;
int main() {
istringstream ss("Hello World!
This is a new line.");
string line;
while (getline(ss, line)) {
cout << line << endl;
}
return 0;
}
这个程序从字符串流中逐行读取内容并输出到标准输出。
getline() 在每次调用后会自动移动输入流的指针到下一行的开头,准备读取下一行文本。
与 cin 不同,getline() 可以读取空格和嵌入在行中的空格,因此非常适合用于处理包含空格的输入。
如果在使用 getline() 之前有使用 scanf() 等函数,可能需要用 getchar() 来读取前一个换行符,避免影响后续的输入。
C++中的getline()函数是一个功能强大的工具,适用于从各种输入流中读取整行数据。它不仅可以读取包括空格在内的整行文本,还提供了灵活的控制方式来处理不同的分隔符和最大字符数限制。在实际应用中,合理使用getline()可以简化数据处理流程,提高程序的可读性和可维护性。无论是处理用户输入、文件读取还是字符串流操作,getline()都是一个不可或缺的工具。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。
根据给定的手机号、姓名、身份证、人像图片核验是否一致
通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。
IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。
结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。