如何以包含空格的字符串形式获取输入

How to get input as a string which contain spaces?

本文关键字:获取 输入 字符串 包含 空格      更新时间:2023-10-16

我正在尝试制作一个将执行输入命令的程序。我试过:

const char* command = "echo Hello, World!";
system(command);

这工作正常。但我想这样做,以便用户必须键入命令。这就是问题所在。我试过了:

const char* command;
cin >> command;
system(command.c_str());

这也很好用,但仅适用于像 cls 这样的单字命令.但是如果我尝试输入像 color a 这样的命令,程序会将我的输入数据保存为两个单独的命令并执行color,接下来它会尝试执行a,显然输出是:'a' is not recognized as an internal or external command, operable program or batch file.

那么如何将输入数据保存为包含空格的单个字符串呢?

您遇到的问题是cin标记空格上的输入。如果要获取包括非行结束空格在内的整行输入,则应使用 std::getline()

我相信

你正在寻找std::getline() - 这将处理所有输入,直到指定的分隔符,默认为 n

std::string line;
if (std::getline(std::cin, line)) {
    ...
}
std::getline(std::cin, command);