1

可能重复:
如何在 C++ 中将数字转换为字符串,反之亦然

在 csharp 中

string s1="12345"
string s2="54321"

public double (string s1,string s2)
{
  convert.todouble(s1) +convert.to-double(s2)
}

我在 C++ 中怎么做,因为没有转换类

4

6 回答 6

7

除了其他答案之外,最简单的方法(至少在 C++11 中)是:

double add(const std::string &s1, const std::string &s2)
{
    return std::stod(s1) + std::stod(s2);
}
于 2012-07-29T11:07:25.530 回答
4

如果您的编译器支持 C++11,则有一个stod将字符串转换为双精度的函数。

你的功能将只是

return std::stod(s1) + std::stod(s2);
于 2012-07-29T11:06:40.247 回答
2

使用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::stringstreamstrtod

于 2012-07-29T11:04:26.497 回答
2
double doubleFromString(const std::string &str)
{
    std::istringstream is(str);
    double res;
    is >> res;
    return res;
}
于 2012-07-29T11:04:32.030 回答
1

c ++ 11包含std::stod将a转换string为double。否则,您可以使用stringstreamsor 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.

于 2012-07-29T11:06:20.403 回答
-1

我会使用字符串流,因为您不需要对 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;
}
于 2012-07-29T13:21:06.997 回答