我正在开展一个QT项目,用户输入他们的全名,程序会根据他们名字中的字母生成一个随机的5个字符的密码。不幸的是,我遇到了一个有效的问题,但每次重新运行程序时都会产生相同的结果。所以它显然不是随机的。即使退出QT Creator并再次打开它并使用相同的用户输入运行程序,它也会产生相同的结果。
我还需要生成没有空格的密码。
这是我的代码:
while(password.length() < 5) {
int index = qrand() % fullName.length();
QChar nextChar = fullName.at(index);
if (!nextChar.isSpace()) {
password.append(nextChar);
}
}
非常感谢任何解决方案。
答案 0 :(得分:2)
您需要为qrand提供合适的种子(通常在程序启动时)。尝试:
QTime now= QTime::currentTime() ;
qsrand( now.msec() );
您不会问这个问题,但是您是否在检查fullName的长度是否为零(因为程序会尝试除以零)?或者说它不仅仅由空白组成(因为它会永远循环)?两者的简单解决方案是修剪fullName并检查其长度是否严格大于零。