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