c++getline 读取一行内容
在C++中,std::getline()
函数用于从输入流中读取一整行,直到遇到换行符(\n
)为止。这个函数特别有用,因为它允许你读取包含空格的字符串。下面是一个如何使用 std::getline()
的示例:
解释
cpp复制代码
#include <iostream> | |
#include <string> | |
int main() { | |
std::string line; | |
// 提示用户输入一行文本 | |
std::cout << "请输入一行文本: "; | |
// 使用getline()函数读取一行 | |
std::getline(std::cin, line); | |
// 输出用户输入的行 | |
std::cout << "你输入的行是: " << line << std::endl; | |
return 0; | |
} |
在这个例子中,std::getline()
函数从 std::cin
(标准输入流,通常是键盘)读取一行文本,并将其存储在 line
字符串变量中。当用户输入一行文本并按下回车键时,std::getline()
会读取整行内容(包括空格),直到遇到换行符,然后停止读取。
请注意,std::getline()
在读取换行符后不会将其存储在字符串中。也就是说,如果你输入的是 "Hello, World!\n",line
字符串将只包含 "Hello, World!",不包括换行符。
此外,如果你在读取字符串之后立即尝试读取另一个变量(如整数或浮点数),可能会遇到问题,因为输入缓冲区中可能还包含换行符。在这种情况下,你可能需要使用 std::cin.ignore()
来清除输入缓冲区中的换行符,如下所示:
cpp复制代码std::getline(std::cin, line);std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');int number;std::cout << "请输入一个整数: ";std::cin >> number;
在这个例子中,std::cin.ignore()
会忽略输入缓冲区中的所有字符,直到遇到换行符为止。这确保了 std::cin >> number;
能够正确地读取一个整数,而不会被之前的换行符干扰。为了使用 std::numeric_limits
,你还需要包含 <limits>
头文件。
原文地址:c++getline 读取一行内容_清华栋哥编程 (17csp.com)