C++浮点到特定长度的字符串

标签 c++

我的问题是:我想将一个最多保留 2 位小数的 float 写入一个字符串中,然后在数字后面不带几个 0 的情况下打印它。

我目前的做法:

Values Material;          // Class 'Values', Object 'Material'
Material.Temp = 15.56;    // 'Temp' = float

string ss = to_string(Material.Temp);  // Conversion to string
const char* cNumber = ss.c_str();      // Conversion to const char
HPDF_Page_ShowText(page, cNumber);

打印出:15.56000000

HPDF_Page_ShowText 是开源库 libharu 用于创建 PDF 文档的命令。它需要 (page-object, *const char)。这就是必须首先将字符串转换为 const char* 的原因。

我真的在网上搜索过类似的问题,但没有找到适合我的。

最佳答案

使用 std::stringstreamstd::setprecision()功能结合 std::fixed流操纵器:

#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>

int main(){
    float myfloat = 15.56f;
    std::stringstream ss;
    ss << std::fixed << std::setprecision(2) << myfloat;
    std::string s = ss.str();
    std::cout << s;
}

const char* 变量可以通过以下方式获取:

const char* c = s.c_str();

更新:
首选 std::ostringstream,因为该流仅用于输出。

关于C++浮点到特定长度的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089298/

相关文章:

c++ - QtCreator : Target debug/. ..obj 不存在

c++ - 使用 transinplacefilter 决定分配器

c++ - 哨兵节点如何提供优于 NULL 的好处?

c++ - 调用成员函数时出错

c++ - 使用链接列表计算巨数

c++ - C++ 中的赋值与初始化

c++ - 可以保存 istream 的变量?

c++ - G++ 4.8 中的 GLM 和原子

c++ - 从 priority_queue 弹出时出现排序问题,这是 std::priority_queue 的错误吗

c++ - 可能的 : Set Operations on Disparate Maps with Same Key Type?