我寫了一個非常簡單的加密程序來練習C++,我遇到了這個奇怪的行爲。當我通過設置字符串等於數組將字符*數組轉換爲字符串,然後我得到一個錯誤的字符串,但是當我創建一個空字符串並添加單獨數組中的字符時,它創建正確的字符串。有人可以解釋爲什麼發生這種情況,我剛剛開始編程在上週的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;
}
編輯:我刪除了所有從數組中的零和它並沒有改變任何東西
您的編碼字符串包含零。 –
「錯誤的字符串」是什麼意思?結果字符串與第一個字符串相同,除了結果字符串停在原始字符串中的第一個「\ 0」字符處「? –