假设我有两个基于用户输入的字符串(string1,string2)。我希望 string1 至少5个字符最多10个字符,并且只能包含以下内容:

  • 大写字母
  • 小写字母
  • 数字(0-9)

  • 否则,将提示用户继续输入字符串,直到满足要求为止。
    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指出的那样,您可以只使用正则表达式。哪个更好,完全取决于您。

    09-04 23:57
    查看更多