Fre*_*Kay 7 c++ qt number-formatting
我想使用qDebug(),qInfo()等自定义默认浮点精度和数字格式.
有没有办法在全球范围内定义?
想象一下:
double num = 1.2;
qDebug() << "My floating point Number is: " << QString::number(num, 'f', 2);
//Output: My floating point Number is 1.20
Run Code Online (Sandbox Code Playgroud)
现在我想在每次写一个数字时避免使用QString :: number(num,'f',2),而是更喜欢使用标准的percision和format.
Leo*_*eon 13
可以通过操纵器来控制QDebug
流的格式化.因此,你必须打电话QTextStream
qDebug() << fixed << qSetRealNumberPrecision(2);
Run Code Online (Sandbox Code Playgroud)
在你的程序的开头.
但请注意,qDebug()
如果某些(未经过仔细编写的)代码设置了所需的格式,并且在完成其作业后没有将其恢复到以前的状态,则格式化状态可能会稍后更改.
编辑
事实证明,QTextStream
操纵器的效果(至少结合使用qDebug()
)仅限于包含语句,并且不会持久存在.因此,您可以做的最好的事情是定义您的替换qDebug()
如下:
#define myqDebug() qDebug() << fixed << qSetRealNumberPrecision(2)
Run Code Online (Sandbox Code Playgroud)
并使用它而不是qDebug()
:
double num = 1.2;
myqDebug() << "My floating point Number is: " << num << endl;
Run Code Online (Sandbox Code Playgroud)
输出:
My floating point Number is: 1.20
Run Code Online (Sandbox Code Playgroud)
你不能。
qDebug()
,,qFatal()
等等...返回类的实例QDebug
。
问题在于该运算符QDebug::operator<<(float f)
是非虚拟类成员函数。
如果没有收到编译错误消息,则无法定义另一个
运算符 << 不明确