我正在编写一个程序,在该程序中,我以字符串的形式接受用户的输入,然后使用以下语法查找其长度。
getline(cin,password);
length=password.length();
程序的实际工作是进行密码验证,它接受用户的字符串输入,并且只允许使用字母气动字符(没有符号和空格(
现在,如果用户输入"符号和空格",我需要访问字符串的每个单词,并让用户知道输入的字符串包含"符号和空间"(如果有的话(,但我不知道如何访问字符串的每一个单词。
您可以很好地使用正则表达式来检查密码,例如,该表达式确保给定字符串中只允许使用小写和大写字母和数字:^[a-zA-Z0-9]+$
(起始位置^
到结束位置$
(;
样本代码(在线测试(:
#include <iostream>
#include <string>
#include <regex>
using namespace std;
bool validateAlphaNumsOnly(std::string pw) {
std::regex alphanum_only_regex { "^[A-Za-z0-9]+$" }; // expression beginning to end lower- and uppercase letters and numbers only
if(std::regex_search(pw, alphanum_only_regex)) {
std::cout << "That's a valid Password! " << pw << std::endl;
return true;
} else {
std::cout << "Invalid Password! " << pw << std::endl;
return false;
}
}
int main() {
validateAlphaNumsOnly("aaa abc");
validateAlphaNumsOnly("aaaYYYabc");
validateAlphaNumsOnly("aaaYYYabc1");
return 0;
}
PS:我们也可以用正则表达式检查长度:^[a-zA-Z0-9]{8,}$
而不是一个或多个+
字符,我们需要8个或更多。。。
使用此方法,istream&get(char*s,streamsize n,char-delim(;它将字符放入c字符串中,直到输入了n-1个字符或一个终止字符,您可以将其作为空格字符。
char* str[50];
get(str, 50, " ");
int length = strlen(str);
问候,