誰かが関数の使用方法を説明できれば、それは素晴らしいことです。パラメータがわかりません。
ありがとう
最初のパラメータは文字へのポインタです。c_str() は、文字列オブジェクトからそのポインターを提供します。2 番目のパラメーターはオプションです。文字列内の数値の後の次の文字へのポインターが含まれます。詳細については、 http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/を参照してください。
string s;
double d;
d = strtod(s.c_str(), NULL);
最初の引数は変換する文字列で、2 番目の引数は元の文字列の float の後の最初の char を指す char* への参照です (番号)。2 番目の引数を気にしない場合は、NULL に設定できます。
たとえば、次の変数があるとします。
char* foo = "3.14 is the value of pi"
float pi;
char* after;
pi = strtod(foo, after)
値が次のようになった後:
foo is "3.14 is the value of pi"
pi is 3.14f
after is " is the value of pi"
foo と after の両方が同じ配列を指していることに注意してください。
C++ で作業している場合は、なぜ使用しないのですstd::stringstream
か?
std::stringstream ss("78.987");
double d;
ss >> d;
または、さらに良いboost::lexical_cast
:
double d;
try
{
d = boost::lexical_cast<double>("889.978");
}
catch(...) { std::cout << "string was not a double" << std::endl; }