c++ - 如何将 char[41] 转换为 char[40]

标签 c++ arrays char

通常我会执行 strcpy 但这里看起来我无法将较大的数组复制到较小的数组。我知道我需要为此跳过一个数组元素,我想跳过第一个 [0] 元素,但我该怎么做呢?我真的不想写类似的东西 a[39]=b[40]; a[38]=b[39]...

最佳答案

谨慎行事。使用 strncpy而不是 strcpy :

std::strncpy(a, b + 1, 40);

即使 b 中的最后一个字符不是 '\0',或者在某处有 '\0',它也会起作用索引

strncpyab 不被视为 cstring 时特别有用,而是它们'只是 buffer,它可能包含也可能不包含 '\0'

在 C++ 中,您还可以使用 std::copy作为:

#include <algorithm> //include this!

std::copy(b + 1, b + 41, a); //b + 41 = (b + 1) + 40

我通常更喜欢 std::copy,因为它是通用的,可以与任何可迭代 类型一起使用。

关于c++ - 如何将 char[41] 转换为 char[40],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352368/

相关文章:

c++ - 为什么在 32 位 x86 架构上默认对齐 `int64_t` 8 字节?

java - 不同编程语言的字符编码是否相同?

java - 创建类加载器以从字节数组加载 JAR 文件

c - char指针如何成为整个字符串?

c - scanf 一次获取多个值

c++ - 如何使用 Voro++ 库获取容器中所有单元格的顶点?

c++ - 计算所有可能的乘积为完全平方数对的有效算法

C++使用Strtok读取字符串字符时出错

c - 在结构数组中查找值

javascript - 删除多维数组中的某些值