我希望以下代码从价格中删除前导零(0.00应该减少到.00)
QString price1 = "0.00";
if( price1.at( 0 ) == "0" ) price1.remove( 0 );
这给了我以下错误:“错误:从'const char [2]'到'QChar'的转换是不明确的”
答案 0 :(得分:6)
主要问题是Qt将"0"
视为以null结尾的ASCII字符串,因此编译器消息为const char[2]
。
此外,QString::remove()
有两个参数。所以你的代码应该是:
if( price1.at( 0 ) == '0' ) price1.remove( 0, 1 );
这在我的系统上构建并运行(Qt 4.7.3,VS2005)。
答案 1 :(得分:4)
试试这个:
price1.at( 0 ) == '0' ?
答案 2 :(得分:2)
问题是'at'函数返回QChar
,这是一个无法与本机字符串/字符串“0”进行比较的对象。你有几个选择,但我会在这里放两个:
if( price1.at(0).toAscii() == '0')
或
if( price1.at(0).digitValue() == 0)
如果char不是数字,则 digitValue
返回-1。
答案 3 :(得分:0)
QString s("foobar");
if (s[0]=="f") {
return;
}
答案 4 :(得分:0)
QChar QString :: front()const返回的第一个字符。 串。与at(0)相同。
提供此功能是为了实现STL兼容性。
警告:在一个空字符串上调用此函数构成 未定义的行为。
http://doc.qt.io/qt-5/qstring.html#front
QString s("foobar");
/* If string is not empty or null, check to see if the first character equals f */
if (!s.isEmpty() && s.front()=="f") {
return;
}