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

Gle*_*leb 0 c++ string type-conversion

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

我有两个函数 - 一个能够将int转换为字符串,另一个能够将double转换为字符串.然而,将这两者合二为一,会更优雅.我已尝试使用下面的代码,但它产生一个错误:'number'未在此范围内声明

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));
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 9

由于numberif ... {括号内声明,它只存在于该空间中.此外,您不能让一个变量在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;
}
Run Code Online (Sandbox Code Playgroud)