在c++中处理void指针和char
deal with void pointers and char in c++
我现在正在编写一段代码,遇到了void指针和char的问题。基本上,在serialize函数中,我们会有一个新的char。我们需要将该字符存储在CCD_ 1中。这是serialize函数的签名。
void serialize(void *buffer,
//some other inputs here
){
std::string str = "";
/*some code here, store the final output in str first*/
char* charStr = new char[str.size()];
strcpy(charStr,str.c_str());
buffer = static_cast<void*>(charStr);
}
使用这样的功能,
char buffer[256];
serialize(buffer,
//some other inputs here
);
然而,存储在buffer
中的数据会非常奇怪。作为临时解决方案,我将签名中的void指针更改为char指针。然而,我知道一定有更好的。
如果要填充缓冲区,则不能为其赋值(这只会覆盖指针,使原始缓冲区内容保持不变)。在serialize(charStr)中也不需要临时缓冲区。您可以直接将strcpy写入输出缓冲区,如下所示:
void serialize(void *buffer
){
std::string str = "foo bar baz";
strcpy((char *)buffer, str.c_str());
}
将其定义为
void serialize(void *& buffer,
//some other inputs here
){
使用指针作为参数,记住删除缓冲区
char* buffer;
serialize(buffer,
//some other inputs here
);
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 使用指针初始化 char 数组或字符串 C++
- 为什么将指针重新分配给 1D 数组的 char 时显示错误,但 2D 数组工作正常?
- 构造函数 (C++) 中的 char 指针参数存在问题
- 将 char 指针传递给接受对 char 数组的引用的函数
- 分配值时,C++ char* 指针上的前递增与后递增
- 使用 map<char,strring> 的迭代器返回指针 map<char,strring>*
- char* 除了作为C++中的指针之外,还有其他功能吗?
- 为什么当我尝试将char输入到int时,文件指针会卡住
- char指针或char变量的默认值是多少
- char p[0]表示自动分配的缓冲区还是安全指针
- 为什么为char指针分配内存不会截断char序列
- 通过指针使用C++还原char数组时出现问题
- 愚蠢的问题:strcat和char指针
- C++17:unique_ptr<char[]> 和 shared_ptr<char[] 之间的指针存储差异>
- 为什么要使用引用来获取 *char?当我们使用指针时,不使用引用不是更好吗?
- 如何将 std::string 赋回作为 <char>void* 指针传递的 std::vector.data()?
- 家庭工作:将一个文件读取到指向指针char(char**)的指针中
- 从Cocos2dx的指针char向量写入sqlite文件
- 将char复制到struct指针char