これは、無効なフォーマットではなく、無効な入力に関する質問です。たとえば、次のコードがあるとします。
tm bar;
foo >> get_time(&bar, "%Y-%m-%d");
cout >> bar.tm_year >> bar.tm_mon >> bar.tm_mday >> endl;
次のように定義すると、これで問題ありません。次stringstream foo("2001-02-28 non-leap year");
のような無効な形式がある場合は、明確なエラーが発生します。stringstream foo("bad format 2001-02-28 non-leap year");
しかし、入力が無効かどうかを検出する方法がわかりません。たとえば、次のようになります。
stringstream foo("2001-02-30 non-leap year");
この場合bar
、何も問題がなかったかのように読むことができます。入力が無効であることを警告するものはありますか?