重複の可能性:
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
、文字列を double に変換する関数があります。
あなたの機能はちょうど
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 には、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
。
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;
}