std::getline 是C++中用于读取整行文本的函数,能完整获取包含空格的输入,直到遇到换行符为止;其语法为 std::getline(std::istream&, std::string&, char) ,常与 std::cin 或文件流配合使用;与 operator>> 混用时需注意缓冲区残留的换行符会导致 getline 读取空行,可用 std::cin.ignore() 清除;结合 std::ifstream 可逐行读取文件,循环条件自动判断文件结束,是处理文本输入的基础工具。

在C++中,std::getline 是处理输入流时非常常用的函数,特别适合读取包含空格的一整行文本。与 operator>> 不同,它不会在遇到空格或制表符时停止读取,而是直到遇到换行符(由默认分隔符 '\n' 控制)才结束,因此更适合读取完整的用户输入行。
std::getline 定义在 <string> 头文件中,其常见用法如下:
std::getline(std::istream& is, std::string& str, char delim);
std::getline(std::istream& is, std::string& str);
第二个版本使用默认换行符作为分隔符,最常用。
下面是一个从键盘读取一整行的例子:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
#include <string>
int main() {
std::string line;
std::cout << "请输入一行文字:";
std::getline(std::cin, line);
std::cout << "你输入的是:" << line << std::endl;
return 0;
}
即使输入包含多个空格,比如 "Hello World C++",也能完整读取。
当 std::cin 和 std::getline 连续使用时,容易出现“跳过输入”的问题。这是因为 operator>> 只读取非空白字符,而换行符会留在输入缓冲区中,被后续的 getline 立即读取为空行。
示例问题代码:
int age;
std::string name;
std::cin >> age;
std::getline(std::cin, name); // 这里可能读到空字符串
解决方法是清除残留的换行符:
结合 std::ifstream 和 std::getline 可以逐行读取文件:
#include <fstream>
#include <string>
#include <iostream>
int main() {
std::ifstream file("data.txt");
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
file.close();
return 0;
}
循环条件自动判断是否到达文件末尾,简洁高效。
基本上就这些。掌握 std::getline 的用法,能有效避免因空格截断或缓冲区残留导致的输入问题,是C++文本处理的基础技能之一。
以上就是C++如何使用std::getline读取一行文本_C++输入流操作与std::getline用法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号