检查QTextStream :: operator >>是否失败

sas*_*alm 3 c++ qt

函数如sscanf返回成功读取项目的数量,这对于错误检查很有用,例如下面的代码将打印"失败",因为sscanf将返回3(读取1,2,3,但"text"不是数字) .

是否QTextStream提供了错误检查的等效方法?

const char *text = "1 2 3 text";
int a, b, c, d;
if (4 != sscanf(text, "%d %d %d %d", &a, &b, &c, &d))
    printf("failed");
QString text2 = text;
QTextStream stream(&text2);
stream >> a >> b >> c >> d; // how do I know that d could not be assigned?
Run Code Online (Sandbox Code Playgroud)

Arm*_*yan 7

您可以通过调用以下方式查询流的状态stream.status():

if (stream.status() == QTextStream::Ok) 
{
    // succeeded
} 
else
{
    // failed
}
Run Code Online (Sandbox Code Playgroud)