c++ - 为什么在 C++ 中调试和运行输出不同?
问题描述
我想阅读“.text”文件并将字符串转换为双精度。在调试模式下,我可以将文本读取为 99,03,但在运行模式下,我只能读取 99。我不明白会怎样?我的转换代码如下
double a = std::stod(text)
解决方案
std::stod
受语言环境影响。
#include <iostream>
#include <string>
#include <clocale>
int main(void){
std::setlocale(LC_ALL, "C");
std::string s{"99.03"};
double d = std::stod( s );
std::cout<< d << "\n";
std::setlocale(LC_ALL, "de_DE.UTF-8"); // A locale installed on your machine.
std::string s2{"99,03"};
double d2 = std::stod( s2 );
std::cout<< d2 << "\n";
}
您可能会得到如下结果:(在 msvc 和 gcc 9.3.0 上测试)
99.03
99.03
如果您还想std::cout
打印逗号作为小数分隔符,imbue
则为必填项。你可以参考这篇文章。
推荐阅读
- typescript - 为什么函数在 TypeScript 中扩展 Record?
- corda - JMX Metrics 和 New Relic
- python-3.x - 使用 Pydrive 按 modifiedTime 查询文件
- r - 使用 R 中的绘图函数,我希望将带有标签的数据点展开而不是索引,因为我只有 y 值
- c# - 如何在没有无头浏览器的情况下在服务器端创建 Google 图表?
- javascript - 将表单名称发送到 JS/jQuery 和序列化
- python - Python:从一个 txt 文件中解析多个 JSON 对象
- c++ - 指针作为类变量 Qt
- c# - 将值从“select asp-for”传递到“textarea”asp.net core razor
- dc.js - 今天如何在折线图上添加垂直线?