此方法
bool isNumber(string input)
{
char* p;
strtod(input.c_str(), &p);
return *p == 0;
}
应该输入一个字符串并将其转换为double。但我不明白它的过程。有人可以逐行向我详细解释这个吗?而且,不应该将bool改为double,因为它没有返回真值或假值?感谢。
答案 0 :(得分:5)
strtod
尝试将字符串转换为double
。它还将p
参数设置为指向转换结束的位置。
如果转换使用了字符串中的所有字符 - 如果它们都是数字的一部分 - 指针p
将指向字符串的'\0'
终止符。
因此,return *p == 0
或更好return *p == '\0'
告诉我们是否到达了字符串的末尾。当然,==
会返回bool
结果。