有限制的布尔值

时间:2015-02-05 03:12:36

标签: c++ boolean

如何编写一个布尔值来检查字符串是否只有字母,数字和下划线?

4 个答案:

答案 0 :(得分:1)

假设String支持迭代器,请使用all_of

using std::begin;
using std::end;
return std::all_of(begin(String), end(String),
                   [](char c) { return isalnum(c) || c == '_'; });

答案 1 :(得分:1)

以一种更简单的方式,运行循环并检查所有持有您提到的属性的字符,如果没有,则返回false。

代码:

bool stringHasOnlyLettersNumbsandUndrscore(std::string const& str)
{
  for(int i = 0; i < str.length(); ++i)
  {
       //Your character in the string does not fulfill the property.
       if (!isalnum(str[i]) && str[i] != '_')
       {
             return false;
       }
  }
  //The whole string fulfills the condition.
  return true;
}

答案 2 :(得分:0)

bool stringHasOnlyLettersNumbsandUndrscore(std::string const& str)
{
   return ( std::all_of(str.begin(), str.end(),
                           [](char c) { return isalnum(c) || c == '_'; }) &&
          (std::count_if(str.begin(), str.end(), 
                   [](char c) { return (c == '_'); }) < 2));
}

答案 3 :(得分:0)

检查每个字符是字母,数字还是下划线。 对于c和c ++,这应该做。

 if(!isalnum(a[i]) && a[i]!='_')
 cout<<"No";

你必须添加&lt; ctype&gt;这个代码可以工作。

这是我想到的最快捷方式,可能还有其他更复杂,更快捷的方法。