c++ - 字符数组复制失败

标签 c++ arrays char

我正在复制一个数组,由于某些原因,复制后的值不一样。代码如下。在这两种情况下,_data 变量都是一个 char[4]。复制后,断言触发。如果我在调试器中检查这两个值,它们显示为:0x00000000015700a80x00000000015700b0

_data[0] = rhsG->_data[0];

_data[1] = rhsG->_data[1];

_data[2] = rhsG->_data[2];

_data[3] = rhsG->_data[3];

assert(_data == rhsG->_data);

最佳答案

您错误地认为 C++ 是一种易于使用的高级语言(开玩笑)。 C 风格数组上的 operator == 比较它们的地址,当然这里是不同的。您可以使用 std::equal 来比较两个数组,或者使用支持更直观的 opeartor == 的不同数据结构,例如 std::数组std::vector

然后您还可以使用它们的 operator = 来复制它们,而不是一次一个地复制每个元素,假设源和目标的大小相同。如果不是,则有 std::copy,否则它们必须是 C 样式数组。

关于c++ - 字符数组复制失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017170/

相关文章:

c++ - R 包中的目标文件太大 (Rcpp)

c++ - 可以在 make 调用中使用 BUILD_MODE 吗?

c++ - 我如何比较 HKL 和 char[]?

c++ - 如何在 C++ 中创建 D3DFORMAT 数组?

C 编程。读取输入并将其解析为单词

Java For 循环如果值更大则重复

c++ - 在 ADL、 "local"或全局命名空间以外的命名空间中定义函数

c++ - 为什么非 const 方法隐藏 const 重载?

java - 如何检查数组的所有元素是否相同

java - 将数组元素添加到 2d ArrayList