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

k97glaaz  于 2023-03-14  发布在  其他
关注(0)|答案(3)|浏览(134)

在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〈〉等也不起作用。

5w9g7ksd

5w9g7ksd1#

首先,一些风格问题:(std::string)val是一种C风格的类型转换,这在C社区中是不受欢迎的。它有几个缺点,包括缺乏类型安全,并且在大量C代码中找不到它。C++针对不同的目标引入了不同类型的类型转换:x一米一纳米一x、x一米二纳米一x、x一米三纳米一x和x一米四纳米一x。
但是,你不应该尝试将一个int类型“强制转换”为一个string类型,这是行不通的,请使用std::to_stringhttp://en.cppreference.com/w/cpp/string/basic_string/to_string

nszi6y05

nszi6y052#

C++11引入了std::stoi(以及每种数值类型的变体)和std::to_string,它们是C atoi和itoa的对应物,但用std::string表示。

#include <string>

int val = 5967;
std::string s = std::to_string(val); // std::string("5967")

同样的问题在以下网址解决:Easiest way to convert int to string in C++

uwopmtnx

uwopmtnx3#

使用此命令:

#include<string>
#include<any>
        
std::any variable;
std::string anyToString = anyToString(variable);
    
string anyToString(any value) {
    
        //add whatever types you would like as an if condition
        if(value.type() == typeid(string))
            return std::any_cast<string> (value);
    
        if (value.type() == typeid(float))
            return to_string(std::any_cast<float> (value));
    
        if (value.type() == typeid(int))
            return to_string(std::any_cast<int> (value));
}

相关问题