c++密码生成器有空格

C++ Password Generator Has Spaces

本文关键字:空格 密码 c++      更新时间:2023-10-16

所以我创建了一个基本的c++密码生成器,它将询问用户希望他们的密码长度,尽管在某些密码中,它将包含一个空格。例如:密码长度为8有时会打印:$15 B2FD

代码是这样的

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
static const char randNum[] =
"0123456789"
"!@#$&"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
int size = sizeof(randNum);
int main() {
    int length;
    cout << "Enter length of password: ";
    cin >> length;
    srand(time(0));
    cout << "Your password is: ";
    for (int i = 0; i < length; i++) {
         cout << randNum[rand() % size];
    }
    cout << endl;
    system("pause");
    return 0;
 }

您生成的密码不包含空格,而是包含空字符''

这样做的原因是randNum被初始化为一个以空结尾的字符串,这意味着randNum不仅包含您在字面量中写入的字符,而且还包含末尾的

因此sizeof(randNum)是68,而不是您期望的67。有时,您将选择生成循环中的最后一个字符。

Windows命令提示符将''打印为空格