问题描述
||
我如何将字符串转换为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());
是一个简单的解决方案