boost :: posix_time :: from_iso_string допускает ошибочный ввод

Как ни странно,

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

доходность 2012-Sep-27 06:23:39то есть переполненные секунды переносятся в следующую минуту. Это действительно ожидаемое поведение? Если это так, как я могу заставить функцию потерпеть неудачу в таких обстоятельствах?

0

Решение

Разные разработчики библиотек имеют разные представления о том, что должно привести к ошибке и какой серьезности.

Ответ прост: если строка поступает из пользовательского ввода, проверьте ее самостоятельно, прежде чем предоставлять ее любой функции, ожидающей строку в надлежащем формате. Во всяком случае, это хорошая идея. В этом случае проверка регулярного выражения будет довольно простой.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector