3

誰かが関数の使用方法を説明できれば、それは素晴らしいことです。パラメータがわかりません。

ありがとう

4

3 に答える 3

5

最初のパラメータは文字へのポインタです。c_str() は、文字列オブジェクトからそのポインターを提供します。2 番目のパラメーターはオプションです。文字列内の数値の後の次の文字へのポインターが含まれます。詳細については、 http://www.cplusplus.com/reference/clibrary/cstdlib/strtod/を参照してください。

string s;
double d;

d = strtod(s.c_str(), NULL);
于 2011-04-16T14:47:44.780 に答える
3

最初の引数は変換する文字列で、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 の両方が同じ配列を指していることに注意してください。

于 2011-04-16T15:11:55.933 に答える
1

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; }
于 2011-04-16T14:48:15.490 に答える