Я написал очень простую программу шифрования для практики c ++, и я столкнулся с этим странным поведением.Когда я преобразовываю свой массив char * в строку, устанавливая строку, равную массиву, я получаю неверную строку, однако, когда я создаю пустую строку и добавляю символы в массив отдельно, это создает правильную строку.Может кто-нибудь объяснить, почему это происходит, я только начал программировать на c ++ на прошлой неделе, и я не могу понять, почему это не работает.
Кстати, я проверил онлайн, и это, по-видимому, оба действительных способа преобразования массива символовв строку.
void expandPassword(string* pass)
{
int pHash = hashCode(pass);
int pLen = pass->size();
char* expPass = new char[264];
for (int i = 0; i < 264; i++)
{
expPass[i] = (*pass)[i % pLen] * (char) rand();
}
string str;
for (int i = 0; i < 264; i++)
{
str += expPass[i];// This creates the string version correctly
}
string str2 = expPass;// This creates much shorter string
cout <<str<<"\n--------------\n"<<str2<<"\n---------------\n";
delete[] expPass;
}
РЕДАКТИРОВАТЬ: я удалил все нули из массива, и это ничего не изменило