假设我有两个基于用户输入的字符串(string1,string2)。我希望 string1 为至少5个字符,最多10个字符,并且只能包含以下内容:
否则,将提示用户继续输入字符串,直到满足要求为止。
while(len(string1)<5 or len(string1)>10) {
if(len(string1) > 10) {
cout << "Please enter a string that is less than 10 characters: ";
cin >> input;
} else if(len(string) < 5) {
cout << "Please enter a string that is more than 5 characters: ";
cin >> input;
} else {
cout << "Please enter a string with legal characters (uppercase/lowercase letters and numbers): ";
cin >> input;
}
如何检查string1是否仅包含大写字母,小写字母和数字?我会以某种方式使用以下内容吗?...
string legalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
string1.find_first_not_of(legalChars)
至于string2,我希望用户输入的至少长6个字符,,并包含至少一个非字母字符。
while(len(string2)<6) {
if(len(string2)<6) {
cout << "Please enter a string that is at least 6 characters long: ";
cin >> input2;
}
}
如何检查string2中的非字母字符?我应该如何解决这个问题?
最佳答案
对于string1
,您只需检查其长度至少为5个字符,最多为10个字符(使用 std::string::length
),然后将每个字符传递给 isalnum
来检查其是否为字母数字。
对于string2
,您可以使用 isupper
来检查其长度至少为6个字符,并且至少具有一个大写字母。
或者就像@Lorehead指出的那样,您可以只使用正则表达式。哪个更好,完全取决于您。