在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转换为string。reinterpret_cast〈〉,static_cast〈〉等也不起作用。
3条答案
按热度按时间5w9g7ksd1#
首先,一些风格问题:
(std::string)val
是一种C风格的类型转换,这在C社区中是不受欢迎的。它有几个缺点,包括缺乏类型安全,并且在大量C代码中找不到它。C++针对不同的目标引入了不同类型的类型转换:x一米一纳米一x、x一米二纳米一x、x一米三纳米一x和x一米四纳米一x。但是,你不应该尝试将一个int类型“强制转换”为一个string类型,这是行不通的,请使用
std::to_string
:http://en.cppreference.com/w/cpp/string/basic_string/to_stringnszi6y052#
C++11引入了std::stoi(以及每种数值类型的变体)和std::to_string,它们是C atoi和itoa的对应物,但用std::string表示。
同样的问题在以下网址解决:Easiest way to convert int to string in C++
uwopmtnx3#
使用此命令: