微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从字符串转换为byte []并将结果添加到内存流中

如何解决从字符串转换为byte []并将结果添加到内存流中

|| 我如何将字符串转换为byte [],它们在流中使用添加结果。谢谢。我正在使用C ++代码ubuntu。 编辑: 我有一个std :: string作为字符串值。 我需要一个方法,将std :: string值作为输入,并将流值作为输出返回。     

解决方法

您可以通过简单地调用get0ѭ获得指向字符串缓冲区的指针。这将返回一个
const char*
(其中
char
int8_t
),您可以有效地用作
byte[]
。请记住,尽管返回的指针指向由字符串对象管理的内存,所以如果您在原始字符串类中进行任何更改,都将使指针无效。另外,由于它是指向
const char
的指针,因此您不应更改缓冲区中的任何值。因此,如果您需要更多的永久内存或需要修改的缓冲区,则可以完成目标的更好方法(使用gcc,因为使用Ubuntu,这应该不是问题):
std::string my_string;
char string_array[my_string.length() + 1];
strcpy(string_array,my_string.c_str());
现在,将“ 7”用作存储缓冲区。 如果您需要从函数返回缓冲区,则必须在堆上分配缓冲区并返回一个指针。这也意味着您在使用完指针后还必须在指针上调用
delete []
,否则最终将导致内存泄漏。因此,您可以执行以下操作:
#include <string>
#include <cstring>

char* return_buffer(const std::string& string)
{
   char* return_string = new char[string.length() + 1];
   strcpy(return_string,string.c_str());

   return return_string;
}

//now use in code
int main()
{
    std::string some_string = \"Stuff\";
    char* buffer = return_buffer(some_string);

    //...do something with buffer

    //...after you\'re done with the buffer to prevent memory leak
    delete [] buffer;

    return 0;
}
    ,正如Space_C0wb0y指出的那样,C ++没有a10ѭ数据类型。 C#有一个。那是你想要的语言吗? 如果您确定要使用C ++,那么我想您会使用大小为1字节的
char
数据类型。另外,要将
std::string
转换为
char*
(指向由
\\0
终止的一堆
char
值的指针),您必须在变量上调用
c_str()
函数。     ,
byte
char
或ѭ19mean的意思不清楚。和 我也不熟悉你的20英镑。但是假设你 有一个
std:;string
,您想将其附加到
std::vector<unsigned char>
,您可以直接使用
std::copy
std::copy( input.begin(),input.end(),std::back_inserter( out ) );
如果需要某种翻译,
std::transform
可能是 只要是1到2英镑到10英镑就可以使用。     ,您可以在字符串上使用c_str()以const char *的形式访问字符串内容,这应该是您所需要的。可能您需要进行强制转换,但是应该没问题,因为char(通常在您的平台上)为1个字节。     ,
std::vector<char> bytes(myString.begin(),myString.end());
是一个简单的解决方案     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。