• 5214阅读
  • 8回复

请教一下...为什么我用toInt将QString型的“55”转换为int型的..可是得到的结果是错的 [复制链接]

上一主题 下一主题
离线swin1223
 
只看楼主 倒序阅读 楼主  发表于: 2009-06-10
请教一下...为什么我用toInt将QString型的“55”转换为int型的..可是得到的结果是错的
离线九重水

只看该作者 1楼 发表于: 2009-06-10
为什么不贴你的代码跟结果出来,真郁闷。
这个函数我经常用,没问题的
离线swin1223
只看该作者 2楼 发表于: 2009-06-10
void form_main::addSlot()
{
QString str1, str2, strResult;
    int add1 = 1, add2 = 2, result = 3;
    
    //得到输入的字符
    str1 = lineEditAdd1->text();
    str2 = lineEditAdd2->text();
    
    //转换为数字
    bool ok1 = FALSE, ok2 = FALSE;
    add1 = str1.toInt(&ok1,1);
    add2 = str2.toInt(&ok2,2);
    
   if ( ok1 &&  ok2 )
    { //如果输入 的是数字的话
result = add1 + add2;
strResult.sprintf( "%d + %d = %d", add1, add2, result );
textLabelResult->setText( strResult );
    }
else
    {  
QMessageBox::warning( this, "Input Error",
        "Could not convert the input to the numbers\n"
        "Please try again.\n\n",
        "Retry",
        "Quit", 0, 0, 1 );
    }
}
离线swin1223
只看该作者 3楼 发表于: 2009-06-10
这是我的代码..就是结果ok1和ok2返回值始终是FALSE。。。
离线九重水

只看该作者 4楼 发表于: 2009-06-10
    add1 = str1.toInt(&ok1,1);
    add2 = str2.toInt(&ok2,2);
第二个参数怎么是1和2? 看看toInt的原型:int QString::toInt ( bool * ok = 0, int base = 10 ) const
默认是十进制的,你输入的是1进制和2进制的?
离线swin1223
只看该作者 5楼 发表于: 2009-06-10
不是这个问题...我默认的10也试过了...还是不行
离线swin1223
只看该作者 6楼 发表于: 2009-06-10
ok1和ok2它们返回FALS说明转换失败...可是如果我把它用toDouble转化为Double却可以..
离线九重水

只看该作者 7楼 发表于: 2009-06-10
看看这个qt参考文档:
Returns the string converted to an int using base base, which is 10 by default and must be between 2 and 36, or 0
1是不可以做第二个参数的;
另外,确认输入的数可以用toInt转换成正整数。
离线foxyz

只看该作者 8楼 发表于: 2009-06-12
add1 = str1.toInt();
add2 = str2.toInt();
快速回复
限100 字节
 
上一个 下一个