Как убедиться в том, что std :: strtof был успешным или неудачным? - PullRequest
0 голосов
/ 25 января 2020

Если strtof не может преобразовать строку, возвращается 0.0. http://www.cplusplus.com/reference/cstdlib/strtof/ не говорит, что функция делает с endptr в случае, если преобразование не удается (в этом случае поведение не определено?)

Как я могу отличить guish между успешным преобразованием из строки, которая анализирует до 0, и неудачным преобразованием?

1 Ответ

1 голос
/ 29 января 2020

С cppreference для float strtof(const char* str, char** str_end):

Если преобразование не может быть выполнено, возвращается 0 и *str_end устанавливается на str.

Таким образом, вы можете просто проверить, если *str_end == str, так как в любом другом случае (например, чтение литерала 0) *str_end должен иметь продвинутый по крайней мере один символ.

...