2016-04-06 17 views
-3

この方法誰かがこのコードを行ごとに説明できますか?

bool isNumber(string input) 
{ 
    char* p; 

    strtod(input.c_str(), &p); 
    return *p == 0; 
} 

入力文字列をすべきであり、二重に変換します。しかし、私はそれのプロセスを理解していません。誰かがこれを私に詳細に説明することはできますか?また、真偽値を返さないので、boolをdoubleに変更するべきではありませんか?ありがとう。

+1

この関数はdoubleに変換されません。入力文字列がdoubleに変換可能かどうかをチェックします。 'strtod'は文字列をdoubleに変換します。 [リファレンス](http://www.cplusplus.com/reference/cstdlib/strtod/) – LukeG

+0

[参考資料で詳しく説明しています](http://en.cppreference.com/w/cpp/string/byte/strtof)。 –

+0

そのタイトルは将来の研究者にとってどのように役立つのですか?特に何を理解していないのですか?より明確な質問をお願いします! [良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を読んでみてください。 –

答えて

5

strtod文字列をdoubleに変換しようとします。また、pパラメータに、変換が終了した位置を指すように設定します。

変換で文字列のすべての文字が使用されている場合 - 数値の一部である場合 - ポインタpは文字列の末尾に'\0'を指します。

したがって、return *p == 0、またはそれ以上の文字であるreturn *p == '\0'は、文字列の最後に達したかどうかを示します。もちろん、==boolの結果を返します。

+0

strtod()の最初の引数は 'const char *'で、 'std :: string 'ではなく' input.c_str() 'で文字列の"生の "ポインタを取得します。パラメータは(少なくとも)constとしてマークする必要があります。 – VolkerK

関連する問題