我使用从16.04升级的64位ubuntu 18.04。
制作QWidget项目,将标签放在MainWindow上,然后将mainwindow.cpp更改为
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
std::cout << strtod("3.5", 0) << std::endl;
}
MainWindow::~MainWindow() { delete ui; }
有两行新内容
#include <iostream>
和
std::cout << strtod("3.5", 0) << std::endl;
其他所有内容都保持不变。
构建发行版并运行。控制台上的结果将为3,这是不正确的。正确值为3.5。为什么?
在Debug版本中,它可以正常工作。 Simmilar非Qt项目效果很好。
答案 0 :(得分:0)
我找到了解决方法。
QApplication类的构造函数更改了本地化。它执行该行
setlocale(LC_ALL, "");
然后十进制字符不能再长一点。解决方案之一是使用Qt的转换函数,例如QString :: toDouble()。