嘿我验证一个字符串。
string getString(string q)
{
string input;
do
{
cout << q.c_str() << endl;
cin >> input;
} while (!isalpha(input));
return input;
}
使用while(!isalpha(input));
输入时会出现该错误。
任何人都可以帮我吗?
答案 0 :(得分:2)
other answer描述了问题所在,但这里有一个使用algorithms from the standard library而不是编写自己的解决方案(示例需要C ++ 11)
bool all_alpha( std::string const& s )
{
return std::all_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isalpha) );
}
只有当字符串中的所有字符都是字母时,上述函数才会返回true。如果您只想禁用数字字符,我会使用稍微不同的功能。
bool any_digit( std::string const& s )
{
return std::any_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isdigit) );
}
或
bool no_digits( std::string const& s )
{
return std::none_of( s.cbegin(), s.cend(), static_cast<int(*)(int)>(std::isdigit) );
}
使用这些功能验证您从用户收到的输入。
如果您不能使用C ++ 11功能,可以修改这些功能以使用std::find_if
代替,并将find_if
的返回值与s.end()
进行比较以确定成功/故障。
答案 1 :(得分:1)
isalpha函数将整数作为参数,但您传递的是std::string
。您可以编写这样的函数来测试您的字符串是否只包含字母字符:
bool noDigitInString(std::string str)
{
for (int i = 0; i < str.size(); i++)
{
if (isdigit(str[i]))
return false;
}
return true;
}