好的,这与我的上一个问题相似,但我最终做的事情对于像这样简单的事情来说太复杂了。按空格键后,我只需要从控制台获取一个字符或数字(我会知道我收到了哪些),而不是按 Enter 键。我确信必须有一种方法可以让终端在空格而不是'\ n'之后读取输入。我需要从控制台读取输入,其中后续数据类型将根据第一个输入的不同而有所不同,我认为读取整行,将其解析为字符串,然后将其中一些解析为整数有点不必要。
那么这在 C++ 中实际上是不可能的还是我还没有找到呢?
编辑:
对于遇到此问题的任何人,我都会发布我的解决方案,因为我现在觉得自己像个白痴。
#include <iostream>
using namespace std;
int main() {
int command = 0, x = 0, y = 0, z = 0;
char c;
do {
cin >> command;
switch(command) {
case 1:
cin >> c >> x;
cout << c << " " << x << endl;
break;
case 2:
cin >> x >> y >> z;
cout << x << " " << y << " " << z << endl;
break;
}
} while (command); //Exits when command = 0;
return 0;
}
switch 语句中的以下 cin 将从与第一个 cin 相同的缓冲区中读取,因此无需事先读取命令是什么。如您所见,这适用于第一个 cin 之后的不同类型和数量的输入,因此无需使用任何其他解决方案。
只是为可能有同样问题的其他人发布这个,而不是对 cin 的工作方式有很好的了解。