我应该实现一个比较两个字符串的函数,strcmp
但忽略空格字符,所以
strcmpignorews("abc ", " a b c")
应该给出相同的结果。
这是我的实现:
namespace {
void SkipWhitespace(const char *&s) {
for (; std::isspace(*s, std::locale::classic); ++s);
}
}
int strcmpignorews(const char *s1, const char *s2) {
for (; *s1 != '\0' && *s2 != '\0'; ++s1, ++s2) {
SkipWhitespace(s1);
SkipWhitespace(s2);
if (*s1 != *s2) {
break;
}
}
return (*s1 < *s2) ? -1 : ((*s1 == *s2) ? 0 : 1);
}
现在,问题是,内联 SkipWhitespace 函数是否有意义?我想我在某处读过inline
不应该用于包含循环或开关的函数,但我不记得在哪里以及为什么。