如何在C中获取char阵列的第一个X元素?提升效果是否有改进的方法
How to get the first x elements of a char array in C? Is there an improved way with boost-libraries?
我的基本任务是将缓冲区阵列的子集获取到另一个缓冲区数组中:
char buffer[max_len];
unit8 *pDestBuffer;
我使用了此代码,因为我想留在ANSI-C:
memcpy(pDestBuffer, buffer, 4);
但是 - 一定有问题,因为我没有得到我的结果。因为,当我调试缓冲区时,我会看到数组的所有插槽 - 当我使用pdestbuffer执行此操作时,我只会得到一个项目 - 但是,我可以更改,但使用 memset(pDestBuffer,1,4)
pdestbuffer是结构的一部分,除了上面的定义外,唯一对其的引用是这些行:
requiredMemory = sizeof(Structure) + bufferSize;
pStructure = (Structure *)HostMalloc(requiredMemory);
pStructure->pDestBuffer = ((uint8 *)pStructure)+sizeof(Sturcture);
我知道,这可能是一项基本任务,我自己正在研究这个任务,但是请,如果有"最佳实践",或者您知道解决方案,请与我分享。p>作为一个扭曲,我真的很想知道,如果使用Boost-libraries可能有改进的方法,我无论如何都可以将其用于其他问题。
您的代码正在工作。仅仅因为您的调试器看不到数据并不意味着它不存在。发生的事情是您的代码说uint8_t * pDestbuffer;
,因此您的调试器认为PdestBuffer只是一个单个字节的指针,所以这就是它显示的。但是,您知道这实际上是一个数组的指针。
可能会有某种方式告诉您的调试器这是一个数组,因此您可以看到所有数据。例如,我知道的一个调试器会让您输入pStructure->pDestBuffer,4
,说我向我展示四个字节,而不仅仅是一个字节。
我认为"最佳实践"不是混合C 和C代码。
#include <array>
#include <vector>
#include <algorithm>
std::array<char, len> buffer;
std::size_t n = 5;
std::vector<char> dest; // if n is dynamic
dest.reserve(n); // "performance"
std::copy(begin(buffer), buffer + n, std::back_inserter(dest));
// or even shorter
std::vector<char> dest{begin(buffer), buffer + n};
提升库是C 。这是C ?
您在标题中说C,而您的代码为C,但C 确实是一种不同的语言,具有不同的写作风格。
"看到所有插槽"是什么意思?如果您指的是Microsoft IDE,则您称为unit8*,您可能是指 uint8_t *
或类似的指针,它可能是指指针,它可能将其解释为零端的字符串,但更有可能只是指针(由于其符号),并显示了什么它指出的不是数组的开始。
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 是否可以使用基类非虚拟方法中的派生类虚拟方法?
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 检查类是否在方法中实例化
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 是否有通用方法可以找到任何以 null 结尾的字符串的长度?
- 检查类方法中是否(此 == nullptr)
- 是否可以从C++程序中调用 ACPI 方法?
- 是否可以将不可复制的成员用作使对象不可复制的替代方法?
- 是否有一种标准方法来计算两个 asctime() 值之间的天数
- C++方法实现:是否可以避免每次都键入类名?
- 是否有正确的方法对生成文件中的对象文件使用模板命令?(C++)
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?