2016-02-11 17 views
1

我正在尋找重載sqrt函數,如下所示,以便它可以將字符串作爲參數並返回一個字符串。爲字符串參數重載sqrt函數

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

這是允許在C + +?如果是這樣,我的語法不正確?

回答

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引用傳遞繩子,讓你不創建一個副本,以防您的字符串是左值(右值對,一如果使用C++ 11,將會發生移動)。

+0

但是它是什麼,例如,我正在尋找做一些完全無關的平方根,只是調用函數sqrt?即,接收一個字符串並返回字符串反轉。 – potatosoup

+0

@potatosoup你可以在功能內做任何你想做的事情。上面的例子將字符串轉換爲整數,並取其平方根。當然,你可以做其他的事情,但是調用'sqrt'函數不會有太大意義,並且會讓其他可能會讀你代碼的人感到困惑。 – vsoftco

+0

該函數應處理參數「香蕉」和「胡蘿蔔」的情況。沒有一個是方形的,但至少胡蘿蔔是根。 –

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代替。