qstring arg double.arg放结构体行么

QString::arg()使用
QString::setNum ( float n, char f = 'g', int prec = 6 )
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
设置字符串为打印的由格式f和精度prec格式化的数据n并且返回这个字符串的引用。
格式f可以为“f”、“F”、“e”、“E”、“g”或者“G”。关于这些格式的解释请参考arg()。
例子:float a = 987.88;
QString title =
QString().setNum(a,'g',6);
QString QString::arg ( double a, int
fieldwidth = 0, char fmt = 'g', int prec = -1 ) const
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。
根据fmt指定的格式,参数a被格式化,g为默认情况并且可以为下列之一:
e - 格式化为[-]9.9e[+|-]999
E - 格式化为[-]9.9E[+|-]999
f - 格式化为[-]9.9
g - 使用e或f格式,看哪一个更简练
G - 使用E或f格式,看哪一个更简练
在所有的情况下,小数点之后数字的个数等于prec指定的精度。
double d = 12.34; QString ds =
QString( "'E' format, precision 3, gives %1" ) .arg( d, 0, 'E', 3
); // ds == "1.234E+001"
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。还没有帐号? 赶紧
文章日志用户版块群组帖子
这个是QString::arg()转换的bug吗,有人遇到吗
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
使用Qt的tr(&%1&).arg(...)转换double到QString会出错,起初以为是内存越界,但是后来用sprintf转换的结果跟它的结果比较,据此判断应该是Qt的Bug。&&&&有没有朋友也遇到这样的情况呢? 我的开发环境为vs2005 + Qt-vs-addin,使用Qt4.5.2 和Qt4.8.4都有这样的问题。代码片段:char buffer[100] = {0};&&QString qsTurnoverV&&&&qsTurnoverVol = tr(&%1&).arg(price.TurnoverVol, 0, 'f', 0);&& &&//test bug&&{&&&&&&sprintf(buffer, &%.0f&, price.TurnoverVol);&&&&&&QString sBuffer(buffer);&&&&&&if (qsTurnoverVol != sBuffer)&&&&&&{&&&&&&&&&&QString sInfo = QString(&'%1' vs '%2'&).arg(qsTurnoverVol).arg(sBuffer);&&&&&&&&&&static int times = 5;&&&&&&&&&&if (times-- & 0)&&&&&&&&&&&&&&MessageBox(0, sInfo.toStdWString().c_str(), TEXT(&出错啦&), MB_OK);&&&&&&}&&}&&对话框输出:'2590:'&&vs '25910''2600:'&&vs '26010'=700) window.open('http://img.blog.csdn.net/20906');" style="max-width:700max-height:700" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >
UID:123401
在线时间1822小时
金钱31775威望1515贡献值6好评度1501
我在MingW Qt5.3Beta下试了,没有问题
UID:112079
在线时间8463小时
金钱12904威望1129贡献值3好评度1119
qsTurnoverVol = tr(&%1&).arg(price.TurnoverVol, 0, 'f', 0);&&个人觉得最后一位的0出的错误,你改成3或其他数字试试!!
有时候为了工作直接获得答案,而我却失去了思考的乐趣!飘啊飘,何时能安居!
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
回 realfan 的帖子
:我在MingW Qt5.3Beta下试了,没有问题 ( 00:16) 谢谢关注哦,实际上不是经常出错,而是偶尔出错,奇怪的是,总是在出现值为xxx10.0的double值会转换出错。 我正准备把出错的double强制转换成两个unsigned long打印出来看看,看看能不能还原问题。
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
回 uidab 的帖子
:qsTurnoverVol = tr(&%1&).arg(price.TurnoverVol, 0, 'f', 0);  个人觉得最后一位的0出的错误,你改成3或其他数字试试!! ( 09:17) 最后一位为0是我的需求呀,之前最后一位不为0倒还没发现过错误。&&例如我需要把100.001的double转换成(int)100。
UID:112079
在线时间8463小时
金钱12904威望1129贡献值3好评度1119
回 wxyao 的帖子
:最后一位为0是我的需求呀,之前最后一位不为0倒还没发现过错误。  例如我需要把100.001的double转换成(int)100。 ( 09:51) 那不清楚了,既然你有double转int的需要,可以把这部分与转换成QString分开做试试。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!飘啊飘,何时能安居!
在线时间9309小时
金钱55026威望5509贡献值12好评度5510
要确认是不是bug,你只需要几行代码即可,比如下面这样#include &QtCore&int main(){qDebug()&&QString(&...&).arg(...);return 0;}
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
回 dbzhang800 的帖子
:要确认是不是bug,你只需要几行代码即可,比如下面这样#include &QtCore&int main(){....... ( 10:24) 谢谢,明白你的意思,可能是代码中多线程,或内存越界引起的,或者是Qt的arg线程安全有bug。暂时没找到自身的原因,就怀疑是Qt的bug喽~~~ 有可能是我程序的问题,继续查找~~~
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
回 dbzhang800 的帖子
:要确认是不是bug,你只需要几行代码即可,比如下面这样#include &QtCore&int main(){....... ( 10:24) 但是在同一个线程、同位置、使用sprintf可以得到正确的结果,而QObject::tr(&%1&).arg(double,...)却不正确。 这个怎么解释呀
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
出错的有下列数值,逗号分隔的前两个字段表示double转换成unsigned long的两个字节。对于第一条: unsigned long longArray[2] = {0, };memcpy(&d, longArray, sizeof(d));0,,'2610:' vs '26110'0,,'3620:' vs '36210'0,,'4100:' vs '41010'0,,'4120:' vs '41210'0,,'5370:' vs '53710'0,,'5600:' vs '56010'0,,'8870:' vs '88710'0,,'11590:' vs ';0,,'12110:' vs ';
在线时间9309小时
金钱55026威望5509贡献值12好评度5510
回 wxyao 的帖子
:但是在同一个线程、同位置、使用sprintf可以得到正确的结果,而QObject::tr(&%1&).arg(double,...)却不正确。 这个怎么解释呀 ( 17:20) 但是你没有给出任何有效证据来证明你的观点。
在线时间9309小时
金钱55026威望5509贡献值12好评度5510
回 wxyao 的帖子
:出错的有下列数值,逗号分隔的前两个字段表示double转换成unsigned long的两个字节。对于第一条: unsigned long longArray[2] = {0, };memcpy(&d, longArray, sizeof(d));....... 无法重现你的问题#include &QtCore&#include &string.h&int main(){&&&&&&&&unsigned long longArray[2] = {0, };&&&&memcpy(&d, longArray, sizeof(d));&&&&char buffer[100] = {0};&&&&sprintf(buffer, &%.0f&, d);&&&&qDebug()&&d&&QString(&%1&).arg(d, 0, 'f', 0)&&&&&&return 0;}结果如下: 2& 26110
UID:82268
在线时间4小时
金钱800威望90贡献值0好评度80
回 dbzhang800 的帖子
:但是你没有给出任何有效证据来证明你的观点。 ( 09:40) 你说的是,我的程序运行时确实出现了那样的BUG,但是单独做的简单的程序来测试,BUG又不能够重现。 我继续找原因了,真心谢谢你的提醒,还亲自测试。
访问内容超出本站范围,不能确定是否安全
限100 字节
您目前还是游客,请
&回复后跳转到最后一页
Powered by & Copyright Time now is:11-29 11:04 &
版权所有 Gzip disabledsetWindowTitle(tr(&%1[*] - %2&).arg(shownName).arg(tr(&Spreadsheet&)));
QString::arg()函数用第一个arg()调用会替换“%1”,第2个arg()调用会替换“%2”。上面的例子其实可以写作:
setWindowTitle(shownName + tr(&[*] - Spreadsheet&));
http://pym./blog/static//
本文已收录于以下专栏:
相关文章推荐
首先声明,个人不认为这是一个bug。考虑到其他人可能有类似的疑问,故整理一下:...
如何使用QString::arg()
在Qt Asistant中,QString::arg的定义如下:
QString QString::arg ( const QString & a, ...
QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如
QString m = tr("%1:%2:%3").arg("12").arg("60").arg("60"); ...
Qt QString的arg()方法的使用,英文太差了,帮助文档没看懂,百度一下,有需要的朋友可以参考下。
(下面两种方法是比较常用的)
1、QString的arg()方法用于填充字符...
今天用QString.arg操作QSQLite,遇到一个小问题,很快解决。
代码先上:
QString dest="*";
QString tableName="AutoSaveStorage...
1、QString::arg()//用字符串变量参数依次替代字符串中最小数值
QString i = "iTest";
例子:QMessageBox::information(this,tr("refuse"),tr("come
from (%1)de
tian")....
在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:
(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr(2)另一类人,确实是出于国际化的需要,将需要在界面上显...
最近在做C++套题时,遇到一个一个选择题,原题如下:
有如下类声明:
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)QT 出现QString:arg:Argument missing异常怎么处理_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
QT 出现QString:arg:Argument missing异常怎么处理
我有更好的答案
Qchar*QByteArray ba = str.toLatin1(),由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档.toLatin1().data()这样一部完成。经测试程序运行时不会出现bug注意第三行,一定要加上,不可以str.data();这样就完成了QString向char*的转化,可能会出错::toLatin1()时会在字符串后面加上‘/0’方法如下。因为char*最后都有一个‘/0’作为结束符,而采用QStringQt再使用第三方开源库时;
为您推荐:
其他类似问题
arg的相关知识
换一换
回答问题,赢新手礼包首先声明,个人不认为这是一个bug(它处于reported阶段,官方也没确认它是或不是bug)。考虑到其他人可能有类似的疑问,故整理一下:
是这样一个问题:
交换两个arg的同时交换%1%2的位置,得到的结果不同
示例程序如下:
#include &QString&
#include &QDebug&
int main(int argc, char *argv[])
QString output1 = QString(&%2%1&).arg(&0001&).arg(&-&);
QString output2 = QString(&%1%2&).arg(&-&).arg(&0001&);
qDebug()&&output1&&output2;
结果如下:
&-001& &-0001&
这个结果很正常。我们稍候分析。但是,你有没有和他一样的疑问呢?
前者为什么不是&-0001&
这是bug还是feature
必须按照 %1 %2 的次序么?
既然用QString的成员函数 arg ,首先看Manual(我们只看重载的函数的一个)吧:
QString QString::arg ( const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Returns a copy of this string with the lowest numbered place marker replaced by string a, i.e., %1, %2, ..., %99.
注意这儿提到了两点:
%后面的数字的范围:1-99
arg用它的参数取代字符串中%和最小的数字
首先:用&0001& 取代 %1
QString(&%2%1&).arg(&0001&) ==& QString(&%20001&)
然后,用 &-& 取代 %20
QString(&%20001&).arg(&-&) ==& QString(&-001&)
有疑问?为什么不是%2或%200?
范围是1-99,所以不可能是200
为什么不是2?自己想想下面的情况
QString(&%1%2%3%4&
&%19%20%21&
.arg(&str1&)
.arg(&str2&)
.arg(&str21&)
本文已收录于以下专栏:
相关文章推荐
Qt QString的arg()方法的使用,英文太差了,帮助文档没看懂,百度一下,有需要的朋友可以参考下。
(下面两种方法是比较常用的)
1、QString的arg()方法用于填充字符...
QString 保留小数点后一位。
QString::number(num,'f',1));
//保留几位1就改成几
int 转16进制QString并补零...
QString 类中各函数的作用。
一、字符串连接函数。
1、QString也重载的+和+=运算符。这两个运算符可以把两个字符串连接到一起。
2、QString的append()函数...
如何使用QString::arg()
在Qt Asistant中,QString::arg的定义如下:
QString QString::arg ( const QString & a, ...
QT学习之QString的arg方法
在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。
在QT5的帮助文档中,可以看出...
QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如
QString m = tr("%1:%2:%3").arg("12").arg("60").arg("60"); ...
QString中的arg()方法在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。大概有以下三种替换的方法。
使用arg(str1, str2, str...
在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。
在QT5的帮助文档中,可以看出以下几点:
使用arg(str1, str2, str3)这种方...
1、QString::arg()//用字符串变量参数依次替代字符串中最小数值
QString i = "iTest";
QMessageBox::information(this,tr("refuse"),tr("come from (%1)de %2 ju jue ni de liaotian").arg(ipAdd...
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 qstring arg 的文章

 

随机推荐