簡體   English   中英

在 Qt 項目中使用時 g++ std::strtod 函數中的錯誤?

[英]bug in g++ std::strtod function when used in Qt project?

我使用從 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。 為什么?

在調試版本中它工作正常。 類似的非 Qt 項目工作正常。

我找到了解決方案。

QApplication 類的構造函數更改本地化。 它執行該行

setlocale(LC_ALL, "");

然后十進制字符不再點。 一種解決方案是使用 Qt 的轉換函數,例如 QString::toDouble()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM