可能重複:
How to convert a number to string and vice versa in C++在C++中添加兩個字符串
在CSHARP
string s1="12345"
string s2="54321"
public double (string s1,string s2)
{
convert.todouble(s1) +convert.to-double(s2)
}
我怎麼做的在C++中,因爲沒有轉換班組長
可能重複:
How to convert a number to string and vice versa in C++在C++中添加兩個字符串
在CSHARP
string s1="12345"
string s2="54321"
public double (string s1,string s2)
{
convert.todouble(s1) +convert.to-double(s2)
}
我怎麼做的在C++中,因爲沒有轉換班組長
使用例如。
double func (const std::string& s1, const std::string& s2)
{
return boost::lexical_cast<double>(s1) + boost::lexical_cast<double>(s2);
}
,或者使用std::stringstream
,strtod
等
double doubleFromString(const std::string &str)
{
std::istringstream is(str);
double res;
is >> res;
return res;
}
C++ 11包含std::stod
,其中轉換的string
到兩倍。否則,您可以使用stringstreams
或boost::lexical_cast<double>
。因此你的選擇是:
return std::stod(s1) + std::stod(s2); //(c++11 only), or:
return boost::lexical_cast<double>(s1) + boost::lexical_cast<double>(s2); //or:
std::stringstream ss1(s1);
std::stringstream ss2(s2);
double a, b;
ss1>> a;
ss2>>b;
return a+b;
當然,你也可以去c路線和使用sprintf
。
如果您的編譯器支持C++ 11,則有一個函數stod
可將字符串轉換爲double。
你的函數將只是
return std::stod(s1) + std::stod(s2);
如果函數retrun類型是int ???所以它相同??? – user1356323 2012-07-29 14:17:46
除了其他的答案,最簡單的方法(在C++ 11至少)會是:
double add(const std::string &s1, const std::string &s2)
{
return std::stod(s1) + std::stod(s2);
}
if function retrun type is int ??? so so same ??? – user1356323 2012-07-29 14:07:16
如果字符串包含一個'int',那麼還有'std :: stoi' [和一組其他的](http://en.cppreference.com/w/cpp/string/basic_string/stol)。 – 2012-07-29 14:22:35
我會使用去字符串流,因爲你不需要對C++ 11的支持。
本文中cplusplus.com回答你的問題:http://www.cplusplus.com/reference/iostream/istringstream/istringstream/
但是,這是我會做什麼:
#include <string>
#include <sstream>
double function (std::string s1, std::string s2)
{
std::istringstream iss (std::string(s1 + " " + s2), std::istringstream::in);
double a, b;
iss >> a;
iss >> b;
return a + b;
}
字符串連接的好用法可以避免代價昂貴的istringstream構造函數。 – 2012-07-29 13:57:58
,我認爲這是一個頑皮的黑客!謝謝 :) – 2012-07-29 17:32:53
@valdo:除C++是一個高級語言了。 – Xeo 2012-07-29 11:03:44
@valdo不是很有幫助.. – jalf 2012-07-29 11:04:12