さて、これは私の最後の質問に似ていますが、私がやったことは、これほど単純なことにはあまりにも複雑すぎました。Enterキーを押す代わりに、スペースキーを押した後、コンソールから1つの文字または数字(これらのどれを受け取っているかがわかります)を取得する必要があります。'\n'の代わりにスペースの後に入力を端末に読み取らせる方法があるはずです。最初の入力が何であるかによって後続のデータ型が異なるコンソールから入力を読み取る必要があります。行全体を読み取り、文字列に解析してから、それらの一部をintに解析する必要はないと思います。
それで、これは実際には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の仕組みをよく理解していません。