字符串参数的重载sqrt函数

时间:2016-02-11 23:23:44

标签: c++ overloading

我希望按如下方式重载sqrt函数,以便它可以将字符串作为参数并返回一个字符串。

std::string sqrt(std::string b){
//do something
}

这是否允许在C ++中使用?如果是这样,我的语法不正确吗?

2 个答案:

答案 0 :(得分:1)

如果你的函数适当地解释了字符串,那就很好了。例如:

#include <iostream>
#include <string>
#include <cmath>

std::string sqrt(std::string b)
{
    return std::to_string(std::sqrt(std::stoi(b)));
}

int main()
{
    std::string input = "625";
    std::string output = sqrt(input);
    std::cout << output;
}

Live on Coliru

语法是正确的,但您可能希望通过const引用传递字符串,这样您就不会创建副本,以防您的字符串为左值(对于右值,如果是rvalues,则会发生移动使用C ++ 11)。

答案 1 :(得分:1)

如果您知道字符串代表double,那么您可以使用:

#include <string>
#include <cmath>

std::string sqrt(const std::string& b)
{
    return std::to_string(std::sqrt(std::stod(b)));
}

同样,如果您知道该字符串代表int使用std::stoi代替。