使用c++访问字符串中的每个单词



我正在编写一个程序,在该程序中,我以字符串的形式接受用户的输入,然后使用以下语法查找其长度。

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);

问候,

最新更新