我希望按如下方式重载sqrt函数,以便它可以将字符串作为参数并返回一个字符串。
std::string sqrt(std::string b){
//do something
}
这是否允许在C ++中使用?如果是这样,我的语法不正确吗?
答案 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;
}
语法是正确的,但您可能希望通过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
代替。