std::getline是C++中读取整行字符串最常用且可靠的方式,从输入流读取至换行符(不含该符)并存入std::string;使用前若混用cin需调用cin.ignore()清缓冲区;支持自定义分隔符;应避免使用C风格的gets/fgets。

用 std::getline 读取一整行字符串,是最常用也最可靠的方式。它会读取从当前位置到下一个换行符之间的所有字符(不包括换行符本身),并存入 std::string 中。
基本用法:cin配合getline
std::getline 是标准库函数,定义在 头文件中。最常见写法是:
#include#include using namespace std; int main() { string line; getline(cin, line); // 读取一整行 cout << "你输入的是:" << line << endl; return 0; }
注意:混用cin和getline前要清空缓冲区
如果在 getline 前用了 cin >>(比如读数字或单词),输入缓冲区里可能残留一个换行符,导致 getline 立即读到空行。
解决方法是在 getline 前调用 cin.ignore() 清掉这个残留:
立即学习“C++免费学习笔记(深入)”;
-
cin.ignore();—— 忽略一个字符(通常是换行符) -
cin.ignore(1000, '\n');—— 忽略最多1000个字符,直到遇到'\n'为止(更安全)
getline支持自定义分隔符
第三个参数可以指定结束字符,默认是 '\n'。例如用逗号分割:
string part; getline(cin, part, ','); // 读到逗号就停
这在解析 CSV 风格输入时很实用。
别用char数组+gets或fgets(C风格)
虽然 fgets 或 gets(已废弃)也能读行,但它们操作 C 风格字符串,容易越界、需手动管理长度,且与 std::string 不兼容。C++ 中应坚持用 std::string + getline。










