如何知道函数内参数的格式C++

How to know the format of the parameter inside a function C++

我一直在尝试在 C++ 中像在 C# 中那样创建一个 Convert.To 命令,但我不想像“IntToString”那样做,而是想像在 C# 中那样像“ToString”那样做。我想知道我怎么知道函数内部给定的参数格式?或者还有其他方法吗?

#include <iostream>
#include <sstream>

class converting {
public:
    std::string Int32ToString(int x) {
        std::stringstream asd;
        asd << x;
        std::string cnvrtd;
        asd >> cnvrtd;
        return cnvrtd;
    }
    int StringToInt32(std::string x) {
        std::stringstream asdf(x);
        int cnvrtd;
        asdf >> cnvrtd;
        return cnvrtd;
    }
};

int main() {
    converting Convert;
    std::cout << "This is for a test. Avaiable options are:" << std::endl << "StringToInt32" << std::endl << "Int32ToString" << std::endl;
    std::string firstinput;
    std::cin >> firstinput;
    if (firstinput == "StringToInt32") {
        std::string input;
        int result;
        std::cin >> input;
        result = Convert.StringToInt32(input);
        std::cout << result;
        return 0;
    }
    else if (firstinput == "Int32ToString") {
        int input;
        std::string result;
        std::cin >> input;
        result = Convert.Int32ToString(input);
        std::cout << result;
        return 0;
    }
    else {
        std::cout << "Please enter a valid input";
        return 0;
    }
}

当你说 - 函数内部给出的参数格式时,你的意思是,你怎么知道参数的数据类型。如果是这种情况,您将不得不为所有要支持转换的数据类型编写函数,在 Converting class 中使用相同的函数名称,这在 C++ 中称为函数重载。例如

std::string convert (int n){}
std::string convert (float n){}
std::string convert (double n){}

当您调用此转换函数时,编译器将根据数据类型选择合适的重载函数。

然而,通过编写类似

的模板函数,可以通过更小的方式实现相同的功能
template<class Dt>
std::string Convert (Dt n){
    return std::to_string(n);
}

如果你提到了任何限制,希望我没有遗漏。