C++ 如果`isDigit()`

C++ 如果`isDigit()`,c++,qt,qchar,C++,Qt,Qchar,如何优雅地获得数字值 QChar qc('4'); int val=-1; if(qc.isDigit()){ val = qc.toLatin1() - '0'; } 看起来不太好 转换为QString,也不起作用,因为创建一个QString对象并开始解析仅仅是为了这个目的似乎有些过分 QChar qc('4'); int val=-1; if(qc.isDigit()){ val = QString(qc).toInt(); } 我错过了更好的选项或接口吗?有一个方法int

如何优雅地获得数字值

QChar qc('4');
int val=-1;
if(qc.isDigit()){
   val = qc.toLatin1() - '0';
}
看起来不太好

转换为
QString
,也不起作用,因为创建一个QString对象并开始解析仅仅是为了这个目的似乎有些过分

QChar qc('4');
int val=-1;
if(qc.isDigit()){
   val = QString(qc).toInt();
}

我错过了更好的选项或接口吗?

有一个方法
int QChar::digitValue()const

返回数字的数值,如果字符不正确,则返回-1 一个数字

所以,你可以写:

QChar qc('4');
int val = qc.digitValue();

我不知道我是怎么错过的!?谢谢