C++ QT中的QString等效于.at()的方法

3

我想要运行以下这行代码:

out.push_back( a.at(0) );

out 是一个包含整数的 QVector

QVector <int> out ( 0 );

它给我的错误代码是:
error: no matching function for call to 'QVector<int>::push_back(const QChar)'
                 out.push_back( a.at(0) );
                                        ^

这让我相信 .at() 方法返回的不是 QString a 中该位置的整数,而是 const QChar。

有没有办法让它返回该整数,或者我是否遗漏了更好的 QString 函数?

1个回答

7

出了什么问题?

您的a 是一个QString,并且它的成员函数QString::at()总是返回QChar。就我记得而言,C ++中的std :: string :: at()也是返回char而不是int。必须小心处理C ++ / Qt中的数据类型!

因此,需要首先将返回的QChar转换为int,以符合您的 QVector<int>模板类型。

但是不用担心,QChar有一个适用于此的成员函数:QChar::digitValue返回数字的值,如果字符不是数字,则返回-1


解决方案:

尝试使用out.push_back(a.at(0).digitValue());


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接