2

たとえば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++ (C++11/C++14/C++1z)でviaの最大フィールド幅機能を実現するソリューションはありますか?sscanfistringstream

sscanf("01:00", "%2d:%2d", &hour, &minute);

編集: setwIOマニピュレータも試しましたが、整数では機能しません。

4

0 に答える 0