【发布时间】:2012-12-27 20:34:46
【问题描述】:
我正在尝试编写一个函数,该函数将字符串作为参数并检查该字符串是否仅包含一个非字母数字字符,如果是这种情况则返回 true,如果不是,则返回假的。
例如:
'Alex's' would return true.
James..Warner would return false.
我当前的代码如下,但我觉得它不起作用。因为我在其他地方有一个计数,它基本上算得上是真的。使用包含字符串的地图完成。而且我得到的计数值对于正在输入的单词来说太高了。
bool Class3::filter(string word)
{
string s = word;
int len = s.size();
for (int i=0; i<len; i++)
{ if(!isalnum(s[i])){
return true;}
else{return false;}
}
}
【问题讨论】:
-
让其他人发现你的代码中的错误是没有效率的。您应该使用调试器单步调试代码以找出问题所在。
-
您想检查一个字符串是否只包含一个全数字字符和
Alex's会返回true?这是矛盾的。 -
顺便说一句,对您的格式的评论。虽然我确定您认为 else{return false;} 是完全清晰的,但标准 C++ 格式是将大括号放在自己的行上,或者至少在左括号后添加一个返回字符,然后给出右括号自己的线。这允许整个代码块缩进,有助于提高可读性。
-
@juanchopanza 是的,你是对的,我没有编辑我的问题来说明我的实际意思。对不起。
-
与问题无关,但
isalnum[s[i]]是未定义的行为。<ctype.h>中的is...函数不将char作为参数。
标签: c++ string character non-alphanumeric