を使用してC++で次のことを実現するにはどうすればよいcin
ですか?
scanf("%d:%d:%d",&day,&month,&year);
さらに、入力が数字、文字、または浮動小数点数であるかどうかを確認する方法。たとえばscanf("%d",&a);
、ユーザーが文字を入力した場合のように行がある場合、それを停止して、正しい入力を取得するようにユーザーに促すにはどうすればよいですか。
を使用してC++で次のことを実現するにはどうすればよいcin
ですか?
scanf("%d:%d:%d",&day,&month,&year);
さらに、入力が数字、文字、または浮動小数点数であるかどうかを確認する方法。たとえばscanf("%d",&a);
、ユーザーが文字を入力した場合のように行がある場合、それを停止して、正しい入力を取得するようにユーザーに促すにはどうすればよいですか。
私はおそらく行全体を読んだり、この場合は空白で区切られた文字列だけを読んだりして、それを解析しsscanf
ます...に精通している場合は、sscanf
少しでも問題はありませんが、#include <cstring>
結局のところ標準です...
string datestr;
cin >> datestr;
int result = sscanf(datestr.c_str(), " %d:%d:%d", &day, &month, &year);
より多くのC++ソリューションについては、Boostには何かがありますが、私自身はそれを使用していません。
注:以下はテストされていません。
unsigned int day;
unsigned int month;
unsigned int year;
cin >> day;
cin.ignore(20,':'); // Ignore everything up to and including the ':'.
cin >> month;
cin.ignore(20, ':');
cin >> year;
「スキップ」も調べてください。を使用skipws
すると、すべてを1行にまとめることができる場合があります。
char colon;
cin >> day >> colon >> month >> colon >> year;
これと同じくらい簡単です:
cin >> day >> month >> year;
乾杯 :)