bool isNumber(string input)
{
char* p;
strtod(input.c_str(), &p);
return *p == 0;
}
入力文字列をすべきであり、二重に変換します。しかし、私はそれのプロセスを理解していません。誰かがこれを私に詳細に説明することはできますか?また、真偽値を返さないので、boolをdoubleに変更するべきではありませんか?ありがとう。
bool isNumber(string input)
{
char* p;
strtod(input.c_str(), &p);
return *p == 0;
}
入力文字列をすべきであり、二重に変換します。しかし、私はそれのプロセスを理解していません。誰かがこれを私に詳細に説明することはできますか?また、真偽値を返さないので、boolをdoubleに変更するべきではありませんか?ありがとう。
strtod
文字列をdouble
に変換しようとします。また、p
パラメータに、変換が終了した位置を指すように設定します。
変換で文字列のすべての文字が使用されている場合 - 数値の一部である場合 - ポインタp
は文字列の末尾に'\0'
を指します。
したがって、return *p == 0
、またはそれ以上の文字であるreturn *p == '\0'
は、文字列の最後に達したかどうかを示します。もちろん、==
はbool
の結果を返します。
strtod()の最初の引数は 'const char *'で、 'std :: string 'ではなく' input.c_str() 'で文字列の"生の "ポインタを取得します。パラメータは(少なくとも)constとしてマークする必要があります。 – VolkerK
この関数はdoubleに変換されません。入力文字列がdoubleに変換可能かどうかをチェックします。 'strtod'は文字列をdoubleに変換します。 [リファレンス](http://www.cplusplus.com/reference/cstdlib/strtod/) – LukeG
[参考資料で詳しく説明しています](http://en.cppreference.com/w/cpp/string/byte/strtof)。 –
そのタイトルは将来の研究者にとってどのように役立つのですか?特に何を理解していないのですか?より明確な質問をお願いします! [良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を読んでみてください。 –