You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何将std::array的内容复制到另一个std::array中?

实现方案

你可以通过以下两种无for循环的方案实现std::array的内容复制,两种方案都和C风格数组的strcpy_s行为一致:

方案1:通用类型兼容方案(适用于任意类型的std::array)

使用标准库<algorithm>头文件提供的std::copy算法,无需手动写循环,类型安全且通用:

#include <array>
#include <algorithm>

std::array<char, 20> test = {"asdasd"};
std::array<char, 19> test2 = {"asdassdsdfd"};
// 复制test2的全部元素到test的起始位置
std::copy(test2.begin(), test2.end(), test.begin());

方案2:字符串场景兼容方案(和原C风格数组写法逻辑完全一致)

如果操作的是char类型std::array存储的C风格字符串,可以直接沿用strcpy_s,通过std::array的data()方法获取底层原生数组指针,size()方法获取数组容量即可:

#include <array>
#include <cstring>

std::array<char, 20> test = {"asdasd"};
std::array<char, 19> test2 = {"asdassdsdfd"};
strcpy_s(test.data(), test.size(), test2.data());

该方案会自动处理字符串的\0终止符,越界时的安全报错逻辑也和原C数组写法完全相同。

补充说明

如果你只需要做内存拷贝(不涉及字符串终止符处理),也可以用std::memcpy实现,仅适用于平凡可复制类型(比如char、int等基础类型):

std::memcpy(test.data(), test2.data(), std::min(test.size(), test2.size()));

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:15:04