Если у вас есть C ++ 11, самое простое решение будет использовать обычные
expresssions. Также возможно использовать std::istringstream
,
особенно если у вас есть дополнительные манипуляторы, например, соответствие
один символ (Если вы этого не сделаете, вы, вероятно, должны. Проблема
происходит достаточно часто.) Для чего-то такого простого, однако, оба эти
решения могут быть сочтены излишними: std::find
для 'T'
, затем для
' '
даст вам итератор для каждого из двух символов, а
Конструкторы двойного итератора std::string
дадут вам
строки, например ::1006
std::string::const_iterator posT = std::find( s.begin(), s.end(), 'T' );
std::string::const_iterator posSpace = std::find( posT, s.end(), ' ' );
std::string date( s.begin(), posT );
std::string time( posT != posSpace ? posT + 1 : posT , posSpace );
(Вам, вероятно, понадобится лучшая обработка ошибок, которую я предоставил.)