我如何将一个字符串转换成一个字节[],然后他们将结果添加到一个流中。谢谢。我正在使用 C++ 代码,ubuntu。
编辑: 我有一个 std::string 作为字符串值。 我需要一种将 std::string 值作为输入并返回流值作为输出的方法。
最佳答案
只需调用 std::string.c_str()
即可获得指向字符串缓冲区的指针。这将返回一个 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());
现在使用 string_array
作为内存缓冲区。
如果您需要从函数返回缓冲区,您将不得不在堆上分配缓冲区并返回一个指针。这也意味着您将不得不在完成指针后调用 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;
}
关于c++ - 从字符串转换为 byte[] 并将结果添加到内存流中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138771/