有人可以逐行解释这个代码吗?

时间:2016-04-06 17:10:48

标签: c++

此方法

bool isNumber(string input)
{
    char* p;

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

应该输入一个字符串并将其转换为double。但我不明白它的过程。有人可以逐行向我详细解释这个吗?而且,不应该将bool改为double,因为它没有返回真值或假值?感谢。

1 个答案:

答案 0 :(得分:5)

strtod尝试将字符串转换为double。它还将p参数设置为指向转换结束的位置。

如果转换使用了字符串中的所有字符 - 如果它们都是数字的一部分 - 指针p将指向字符串的'\0'终止符。

因此,return *p == 0或更好return *p == '\0'告诉我们是否到达了字符串的末尾。当然,==会返回bool结果。