0

奇妙なことに、

std::cout << boost::posix_time::from_iso_string("20120927T062299");// 99 seconds!

yields 2012-Sep-27 06:23:39、つまりオーバーフローした秒は次の分にラップします。それは本当に期待される動作ですか?もしそうなら、そのような状況で関数を強制的に失敗させるにはどうすればよいですか?

4

1 に答える 1

2

ライブラリの実装者が異なれば、エラーの原因と重大度についての考え方も異なります。

簡単な答えは、文字列がユーザー入力からのものである場合、適切にフォーマットされた文字列を期待する関数に提供する前に、自分で確認することです。とにかく、これは一般的に良い考えです。この場合、正規表現のチェックはかなり単純です。

于 2012-09-27T04:20:59.767 に答える