gpt4 book ai didi

c++ - 将内容复制到 char*

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:52 24 4
gpt4 key购买 nike

我有一个 char* 类型的缓冲区, 和一个 string .我想将 string 放入缓冲区内长度 + string .

我编写了以下代码来完成此操作,但它不起作用,因为 std::cout<<strlen(buffer)无论我将什么字符串作为函数的参数传递,都会打印“1”。

int VariableLengthRecord :: pack (const std::string strToPack)
{
int strToPackSize = strToPack.length();
if (sizeof(strToPackSize) + strToPackSize > maxBytes - nextByte)
return RES_RECORD_TOO_LONG; // The string is too long

int start = nextByte;

// Copy the string length into the buffer
copyIntToBuffer((buffer+start),strToPackSize);

// Copy the string into the buffer
strcpy((buffer+start+sizeof(strToPackSize)),strToPack.c_str());

// Move the buffer pointer
nextByte += sizeof(strToPackSize) + strToPackSize;

// Update buffer size
bufferSize = nextByte;

std::cout << "Size of buffer = " << strlen(buffer) << std::endl;
return RES_OK;
}


void copyIntToBuffer (char* buffer, int integer)
{
buffer[0] = integer & 0xff;
buffer[1] = (integer >> 8) & 0xff;
buffer[2] = (integer >> 16) & 0xff;
buffer[3] = (integer >> 24) & 0xff;
}

最佳答案

strlen 不适用于二进制数据(长度字段是二进制的)。跟踪实际长度,或使用 5 + strlen(buffer+4) 仅测量文本部分。

或者,利用您将长度存储在缓冲区中这一事实,并从那里读取长度。

关于c++ - 将内容复制到 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com