如何检查QString的第一个字符?

时间:2011-12-06 18:27:37

标签: c++ qt

我希望以下代码从价格中删除前导零(0.00应该减少到.00)

QString price1 = "0.00";
if( price1.at( 0 ) == "0" ) price1.remove( 0 );

这给了我以下错误:“错误:从'const char [2]'到'QChar'的转换是不明确的”

5 个答案:

答案 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;
}