c++ - 将 double/int 转换为字符串的函数

标签 c++ string type-conversion

我是 c++ 的初学者,所以答案可能很明显。

我有两个函数 - 一个能够将 int 转换为字符串,另一个能够将 double 转换为字符串。然而,将这两者合二为一会更优雅。我已经用下面的代码试过了,但它产生了一个错误:‘number’ was not declared in this scope

string number_into_string (void* data, int psize)
{
    if (psize == sizeof(int))
    {
        int* number; number =(int*)data;
    }
    if (psize == sizeof(double))
    {
        double* number; number = (double*)data;
    }
    ostringstream convert;
    convert << number;
    string str = convert.str();
    return str;
}

int main()
{
    double x =1000;
    int y = 5;
    string str_x = number_into_string(&x, sizeof(x));
    string str_y = number_into_string(&y, sizeof(y));
}

最佳答案

因为 number 是在 if ... { 括号内声明的,所以它只存在于那个空间中。此外,您不能让一个变量在 C 或 C++ 中具有两种不同的类型。

(如果您有 C++11 编译器,则根本不需要这样做,只需使用大多数标准类型都存在的 std::to_string)。

解决方案是不使用指针,而是使用模板函数:

template<typename T> string number_into_string(T number)
{
    ostringstream convert;
    convert << number; 
    string str = convert.str();
    return str;
}

关于c++ - 将 double/int 转换为字符串的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972588/

相关文章:

c++ - 未绘制 QToolButton 上的文本

javascript - 如何展开和折叠单个字符数组?

java - 如何在不知道该单词的情况下更改用户输入的中间字符?

c++ - 更改起始位置并将字符串插入 char 数组

c++ - 将字符数组 char u[10] 与字符串文字 "abc"进行比较是否是未定义的行为

C++ free() 改变其他内存

c++ - 使用智能指针建模所有权的含义

c# - 为什么c#中基类也称为 "super"类?

types - 我如何在 Rust 中惯用地将 bool 转换为 Option 或 Result?

mysql - 在 MariaDB v. 10.1.xx 中将 VARCHAR 数据转换为 DATE