Piszę sobie generator haseł. W okienku jest:
- QLineEdit - zawiera listę znaków, z których będzie generowane hasło
- QSpinBox - określa długość hasła
Kod konwersji QString do tablicy znaków wygląda tak:
int passwordLenght = spinBox_PasswordLenght->value();
QString chars = lineEdit_Charset->text();
QByteArray array = chars.toUtf8();
const char *characters = array.data();
int charactersNumber = sizeof(characters);
QString password;
for (; passwordLenght > 0; passwordLenght--)
{
password += characters[rand()%charactersNumber];
}
lineEdit_Password->setText(password);
Program działa, ale tylko częściowo, bo rozmiar tablicy characters to tylko 4 znaki:
int charactersNumber = sizeof(characters); // zawsze wynosi 4
Co jest w kodzie źle, że program generuje tylko pierwsze cztery znaki?