如何编写一个布尔值来检查字符串是否只有字母,数字和下划线?
答案 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;这个代码可以工作。
这是我想到的最快捷方式,可能还有其他更复杂,更快捷的方法。