📅  最后修改于: 2023-12-03 14:55:51.897000             🧑  作者: Mango
当我们需要从用户输入中读取多行数据时,我们通常需要知道用户何时停止输入。C++ 语言中,常用的方法是让用户在输入的最后一行输入一个特定字符(例如 EOF
),表示输入结束。
在 Unix/Linux 系统下,我们可以使用 Ctrl + D
快捷键来结束输入。这时,cin
会返回一个特殊的错误状态 EOF
,表示输入已经结束。我们需要针对这种情况进行判断,例如:
#include <iostream>
#include <string>
int main() {
std::string line;
while (std::getline(std::cin, line)) {
// 如果输入了 EOF,跳出循环
if (std::cin.eof()) {
break;
}
std::cout << "输入的行内容是:" << line << std::endl;
}
return 0;
}
在这个例子中,我们使用 std::getline
函数从标准输入读取一行数据,并保存到 line
变量中。如果输入了 EOF
,该循环会跳出。
注意:EOF
并不是一个可打印的字符,所以你不会在屏幕上看到任何输出。
除了使用 Ctrl + D
快捷键外,还可以让用户在输入的最后一行输入一个特定的字符,以标识输入结束。例如,我们要求用户输入多行数据,并以单独的一行 end
结束输入:
#include <iostream>
#include <string>
int main() {
std::string line;
while (std::getline(std::cin, line)) {
// 如果输入了结束符,跳出循环
if (line == "end") {
break;
}
std::cout << "输入的行内容是:" << line << std::endl;
}
return 0;
}
在这个例子中,我们使用 std::getline
函数从标准输入读取一行数据,并保存到 line
变量中。如果输入的行内容是 end
,该循环会跳出。
在 C++ 中,我们可以使用特定的字符或 Ctrl + D
快捷键来结束输入。在编写从用户输入中读取多行数据的程序时,我们需要对这种情况进行判断,以确保程序不会陷入死循环。