Знам, че е възможно да използвам 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 манипулатор, но той не работи за цели числа.