Я знаю, что можно использовать istringstream
в качестве альтернативы sscanf
, например:
std::istringstream argtime{"01:00"};
char colon;
int hour;
int minute;
argtime >> std::noskipws;
argtime >> hour >> colon >> minute;
if(argtime && colon == ':') // hh:mm is parsed successfully.
{
// ...
}
Вышеуказанные строки частично похожи на следующие sscanf
код:
sscanf("01:00", "%d:%d", &hour, &minute);
Но есть ли решение для достижения максимальная ширина поля особенность sscanf
с помощью istringstream
в C ++ (C ++ 11 / C ++ 14 / C ++ 1z)?
sscanf("01:00", "%2d:%2d", &hour, &minute);
Изменить: я также пытался setw
IO манипулятор, но он не работает для целых чисел.
Задача ещё не решена.
Других решений пока нет …