在c++中修改字符数组的特定部分
Altering specific parts of a char array in c++
我试图设置一个字符数组,前2个字符等于二进制的698,第3和第4个字符是180以下的动态数字,其余的是预定义的150个字符,然后是eof-是否有一种简单的方法来改变字符数组,因此我可以,例如,这样做:
char arr[155];
arr [0-1] = uint_16(698);
arr[2-3] = uint_16(178);
arr[4-154] = (another message);
我是c++新手,对这些东西没有经验。
c++不提供语言级别的数组切片机制。不过,你可以使用一些机制来实现你想要实现的目标。
你可以笨拙和危险地使用混叠(示例删除)
但是更简单、更清晰的方法是简单地声明一个结构体:
#include <cstdint>
struct Replacement {
uint16_t first = 698;
uint16_t second = 178;
char message[150] = { /*... values ...*/ };
};
int main() {
Replacement r;
// use 'r' instead of 'arr'.
}
如果你想确保struct
中没有填充#pragma pack(push, 1)
struct Replacement {
uint16_t first = 698;
uint16_t second = 178;
char message[150] = { /*... values ...*/ };
};
#pragma pack(pop)
对于698和178,这里有一个技巧。
int *a = (int *)arr;
*a = 678;
a = (int *)(arr + 2);
*a = 178;
它使用溢出来填充字符数组,因此必须考虑赋值顺序。
对于另一个消息,如果您将其保存在另一个字符数组中,请使用strcpy(最好是strncpy)将其复制到(arr + 4)中。或者直接将消息读入(arr + 4)中。
相关文章:
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- Python C 绑定 - 获取从 python 到 C++ 的数组
- 函数参数绑定通过参考与传递指针传递数组的规则
- 删除动态数组后,其绑定的某些值不会更改.为什么
- 如何在数组中使用结构化绑定作为ARG传递给某些函数
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- 使用C 从定界线拆分字符串中提取整数数组
- 在编译时初始化一个C++结构,就像一个未知绑定的数组
- MPI - 当数组初始化值必须为常量时,如何为工作线程创建部分数组
- libpqxx:如何绑定参数数组
- opengl:两个不同的矢量可以绑定到同一个顶点数组对象吗
- Node-ffi 绑定到 NULL 终止的 C 字符串数组,但得到“分段错误:11”
- 为什么 const 数组优先绑定到 const T& 参数而不是 T&& 参数?
- 我无法将新电影正确插入 10 部数组
- C++中的复杂数组 - 实部,想象部
- 将数组绑定双倍到双*&
- 临时常量数组未绑定到右值引用
- 异步Boost写入Java套接字-传入的字节数组有时部分为0
- C++中数组的静态绑定检查
- 为什么引用数组的语法需要(&arr)而不是(arr&)。另外,它如何帮助绑定检查?