我目前正在研究一个程序并思考是否可以对用户输入实施其他限制。我到目前为止所做的限制是用户只允许输入字母和空格,在没有任何输入的情况下点击输入也不会被接受。
cout<<"Input customer's lastname\t\t: ";
getline(cin,lname);
if(lname.find_first_not_of("abcdefghijklmnopqrstuvwxyz ")!=string::npos)
{
cout<<"You can only input alpha here!\n";
cin.clear();
goto p1;
}
else if(lname.empty())
{
cout<<"Please enter your lastname!\n";
cin.clear();
goto p1;
}
我想要的另一个限制是如果用户输入是所有空格,程序也会显示一条消息。其次,我想知道如果用户输入正确的信息(de la Cruz)是否可以检测到输入,那么单词应该只用一个空格分隔,如果不是另一个消息则显示。我不知道怎么做,我已经做了一些研究,但我用C ++找不到任何类似的东西。我不知道这是否可能,因为我刚刚开始学习C ++,或者我根本没有足够的逻辑。 :(
答案 0 :(得分:0)
创建一个函数来检查输入是否有效。在while
循环中使用该函数。
bools isInputValid(std::string const& input)
{
// add all the checks
}
将其用作:
std::cout << "Enter input\n";
while ( getline(std::cout, line) )
{
if ( isInputValid(line) )
{
break;
}
std::cout << "Input is not vaild. Try again\n";
}
答案 1 :(得分:0)
我在检查空间时给了我一点帮助。
bool has_only_spaces(const std::string& str)
{
return str.find_first_not_of (' ') == str.npos;
}
bool has_two_consecutive_spaces(const std::string& str)
{
for (unsigned int i = 1; i < str.length(); i++)
{
if ((str[i - 1] == str[i]) && (str[i] == ' '))
{
return true;
}
}
return false;
}
int main()
{
std::string lname;
std::cout << "Input customer's last name: ";
getline(std::cin, lname);
if (has_only_spaces(lname) || has_two_consecutive_spaces(lname))
{
std::cout << "Not a valid input" << std::endl;
std::cin.clear();
}
}