まず最初に、あなたが何をしようとしているのかをお聞きしたいと思います:
cout<<cin.rdstate()<<endl;
rdstate() の適切な使用については、このページをお読み
ください http://www.cplusplus.com/reference/iostream/ios/rdstate/
2 番目: 入力が文字列型か整数型かをチェックするには、入力文字列を整数データに変換し、無効な入力が与えられたときにエラー メッセージを返します。
したがって、これはあなたを助けるでしょう:
int main() {
string input = "";
// How to get a string/sentence with spaces
cout << "Please enter a valid sentence (with spaces):\n>";
getline(cin, input);
cout << "You entered: " << input << endl << endl;
// How to get a number.
int myNumber = 0;
while (true) {
cout << "Please enter a valid number: ";
getline(cin, input);
// This code converts from string to number safely.
stringstream myStream(input);
if (myStream >> myNumber)
break;
cout << "Invalid number, please try again" << endl;
}
cout << "You entered: " << myNumber << endl << endl;
// How to get a single char.
char myChar = {0};
while (true) {
cout << "Please enter 1 char: ";
getline(cin, input);
if (input.length() == 1) {
myChar = input[0];
break;
}
cout << "Invalid character, please try again" << endl;
}
cout << "You entered: " << myChar << endl << endl;
cout << "All done. And without using the >> operator" << endl;
return 0;
}