可能重复:
如何在 C++ 中将数字转换为字符串,反之亦然
在 csharp 中
string s1="12345"
string s2="54321"
public double (string s1,string s2)
{
convert.todouble(s1) +convert.to-double(s2)
}
我在 C++ 中怎么做,因为没有转换类
可能重复:
如何在 C++ 中将数字转换为字符串,反之亦然
在 csharp 中
string s1="12345"
string s2="54321"
public double (string s1,string s2)
{
convert.todouble(s1) +convert.to-double(s2)
}
我在 C++ 中怎么做,因为没有转换类
除了其他答案之外,最简单的方法(至少在 C++11 中)是:
double add(const std::string &s1, const std::string &s2)
{
return std::stod(s1) + std::stod(s2);
}
如果您的编译器支持 C++11,则有一个stod
将字符串转换为双精度的函数。
你的功能将只是
return std::stod(s1) + std::stod(s2);
使用boost::lexical_cast
例如。
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
将a转换string
为double。否则,您可以使用stringstreams
or 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 的支持。
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;
}