如何在C ++中将任何类型转换为字符串?
std::string val;
template<typename T> std::string AnyToString(T val) {
return (std::string)val;
}
template<typename T> void SetVal(T val) {
this->val = AnyToString(val);
}
int main() {
SetVal(10);
return 0;
}
上面的代码给我一个错误,无法将int转换为字符串。 reinterpret_cast&lt;&gt;,static_cast&lt;&gt;等也不会工作。
答案 0 :(得分:1)
首先,一些样式问题:(std::string)val
是一个C风格的演员,这在C ++社区中是不受欢迎的。有几个缺点,包括缺乏类型安全性,并且您无法在大量C ++代码中找到它。 C ++为不同目标引入了不同类型的强制转换:static_cast<>
,dynamic_cast<>
,reinterpret_cast<>
和const_cast<>
。
但是,您不应该尝试将int“转换”为字符串,这不起作用。请使用std::to_string
:http://en.cppreference.com/w/cpp/string/basic_string/to_string
答案 1 :(得分:0)
C ++ 11引入了std :: stoi(以及每种数字类型的变体)和std :: to_string,它们是C atoi和itoa的对应物,但是以std :: string的形式表示。
std :: string s = std :: to_string(val);
处理