📜  检测用户输入 cpp 的结束 - C++ (1)

📅  最后修改于: 2023-12-03 14:55:51.897000             🧑  作者: Mango

检测用户输入 cpp 的结束 - C++

当我们需要从用户输入中读取多行数据时,我们通常需要知道用户何时停止输入。C++ 语言中,常用的方法是让用户在输入的最后一行输入一个特定字符(例如 EOF),表示输入结束。

使用 Ctrl + D 结束输入

在 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 快捷键来结束输入。在编写从用户输入中读取多行数据的程序时,我们需要对这种情况进行判断,以确保程序不会陷入死循环。