我知道可以使用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);
但有没有解决方案在C ++中通过sscanf
实现istringstream
的最大字段宽度功能(C ++ 11 / C ++ 14 / C ++ 1Z)?
sscanf("01:00", "%2d:%2d", &hour, &minute);
编辑:我也尝试了setw
IO操纵器,但它不适用于整数。