C ++将字符从静态数组复制到动态数组会添加一堆随机元素
C++ copying chars from static to dynamic array adds a bunch of random elements
我有一个静态数组,但是在将值复制到动态数组时,我得到了一堆废话。我需要生成的动态数组正好是 8 个字符
unsigned char cipherText[9]; //Null terminated
cout<<cipherText<<endl; //outputs = F,ÿi~█ó¡
unsigned char* bytes = new unsigned char[8]; //new dynamic array
//Loop copys each element from static to dynamic array.
for(int x = 0; x < 8; x++)
{
bytes[x] = cipherText[x];
}
cout<<bytes; //output: F,ÿi~█ó¡²²²²½½½½½½½½ε■ε■
你怎么知道 cipherText 是空终止的?简单地定义它不会使它以 null 终止。
如果要正确打印 C 字符串,则需要以 null 结尾。机器必须知道在哪里停止打印。
要解决这个问题,请将 bytes
增大一个(9 而不是 8)以使 space 成为空字符,然后将其附加到末尾:
bytes[8] = '[=10=]';
现在 cout
将只读取数组的前 8 个字符,之后遇到 '[=13=]'
将停止。
您需要更新代码以复制空终止符:
unsigned char* bytes = new unsigned char[9]; //new dynamic array
//Loop copys each element from static to dynamic array.
for(int x = 0; x < 9; x++)
{
bytes[x] = cipherText[x];
}
cout<<bytes;
这是假设 cipherText
实际上包含一个空终止字符串。
我有一个静态数组,但是在将值复制到动态数组时,我得到了一堆废话。我需要生成的动态数组正好是 8 个字符
unsigned char cipherText[9]; //Null terminated
cout<<cipherText<<endl; //outputs = F,ÿi~█ó¡
unsigned char* bytes = new unsigned char[8]; //new dynamic array
//Loop copys each element from static to dynamic array.
for(int x = 0; x < 8; x++)
{
bytes[x] = cipherText[x];
}
cout<<bytes; //output: F,ÿi~█ó¡²²²²½½½½½½½½ε■ε■
你怎么知道 cipherText 是空终止的?简单地定义它不会使它以 null 终止。
如果要正确打印 C 字符串,则需要以 null 结尾。机器必须知道在哪里停止打印。
要解决这个问题,请将 bytes
增大一个(9 而不是 8)以使 space 成为空字符,然后将其附加到末尾:
bytes[8] = '[=10=]';
现在 cout
将只读取数组的前 8 个字符,之后遇到 '[=13=]'
将停止。
您需要更新代码以复制空终止符:
unsigned char* bytes = new unsigned char[9]; //new dynamic array
//Loop copys each element from static to dynamic array.
for(int x = 0; x < 9; x++)
{
bytes[x] = cipherText[x];
}
cout<<bytes;
这是假设 cipherText
实际上包含一个空终止字符串。