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)
由于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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |