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~█ó¡²²²²½½½½½½½½ε■ε■
您需要更新代码以复制空终止符:
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
实际上包含一个以null结尾的字符串。
如果你想正确打印C字符串,它需要以null结尾。机器必须知道在哪里停止打印。
为了解决这个问题,将bytes
放大一个(9而不是8),为空字符腾出空间,然后将其附加到末尾:
bytes[8] = ' ';
现在,cout
将只读取数组中的前8个字符,之后它将遇到' '
并停止。
你怎么知道密文是空终止的?简单地定义它不会使它以null终止。
相关文章:
- 数组元素打印的递归方法
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 为什么使用数组元素查找最大数字的程序不起作用?
- 数组元素更改值?
- 如何访问宏中定义的数组元素
- 将数组元素递增 1
- C++函数,它将数组、谓词和运算符作为参数,并将运算符应用于满足谓词的数组元素
- 存储指向动态数组元素的指针
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在 std::map 中插入数组元素
- 使用指针访问数组元素时出现意外结果
- c++ 使用动态分配运算符反向数组元素
- 为什么在 c++ 中分配 char 数组元素时,分配的字符会被销毁?
- 缺少数组元素问题
- 如何在类中制作 2D 数组元素,然后在其构造函数中指定其维度?
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 删除在结构 c++ 中声明的数组元素
- Getter 和 Setter 用于类 C++ 中的数组元素
- 尝试递归获取数组元素的总和
- 使用SWIG将numpy数组元素(int)传递给c++int