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、文字列を double に変換する関数があります。

あなたの機能はちょうど

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::stringstreamなどstrtod

于 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 には、a を doublestd::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

于 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 に答える