📜  cpp float to string - C++ (1)

📅  最后修改于: 2023-12-03 15:00:02.976000             🧑  作者: Mango

将 C++ float 转换为字符串

在 C++ 中,将 float 类型转换为字符串可能会经常用到。本文将介绍几种方法来实现 float 到 string 的转换。

方法一:std::stringstream

使用 std::stringstream 来将 float 类型转换为字符串。我们可以使用 << 运算符将 float 类型插入到 stringstream 中,然后使用其中的 str() 方法将其转换为 string 类型。

#include <iostream>
#include <sstream>

int main() {
    float f = 3.14f;
    std::stringstream ss;
    ss << f;
    std::string str = ss.str();

    std::cout << str << std::endl; // 输出 3.14
}
方法二:sprintf

可以使用 sprintf 函数将 float 类型转换为字符串。sprintf 函数的第一个参数指定存储结果的字符串地址,第二个参数指定格式,比如 "%.2f" 将会输出小数点后两位数。

#include <cstdio>

int main() {
    float f = 3.14f;
    char buffer[100];
    sprintf(buffer, "%.2f", f);
    std::string str = buffer;

    std::cout << str << std::endl; // 输出 3.14
}
方法三:std::to_string

从 C++11 开始,可以使用 std::to_string 函数将 float 类型转换为 string 类型。这种方法非常简单直接,但是其精度可能会受到浮点数舍入的影响。

#include <iostream>

int main() {
    float f = 3.14f;
    std::string str = std::to_string(f);

    std::cout << str << std::endl; // 输出 3.1400001049041748
}

可以使用 std::setprecision 函数来控制输出精度。

#include <iostream>
#include <iomanip>

int main() {
    float f = 3.14f;
    std::string str = std::to_string(f);
    str.erase(str.find_last_not_of('0') + 1);

    std::cout << std::setprecision(2) << std::fixed << str << std::endl; // 输出 3.14
}
总结

本文介绍了三种将 float 转换为 string 的方法:使用 std::stringstream,使用 sprintf 函数和使用 std::to_string 函数。务必根据具体需求选择合适的方法。