将任何类型转换为字符串c ++

时间:2018-01-23 20:19:07

标签: templates type-conversion

如何在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;等也不会工作。

2 个答案:

答案 0 :(得分:1)

首先,一些样式问题:(std::string)val是一个C风格的演员,这在C ++社区中是不受欢迎的。有几个缺点,包括缺乏类型安全性,并且您无法在大量C ++代码中找到它。 C ++为不同目标引入了不同类型的强制转换:static_cast<>dynamic_cast<>reinterpret_cast<>const_cast<>

但是,您不应该尝试将int“转换”为字符串,这不起作用。请使用std::to_stringhttp://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);

同样的问题在Easiest way to convert int to string in C++

处理