我有一个固定长度的 float 组。现在我想将该数组转换为二进制字符串。
我不能使用 const char *
因为我的字符串将包含空字节。在那种情况下我将如何使用 memcpy?我已经尝试过 reinterpret_cast<string *>
,但这不会起作用,因为该字符串还/仅存储指向数据开始和结束的指针(如果我错了请纠正我)。
我已经在构造一个空字符串:
string s;
s.resize(arr_size);
但是我如何将 float 数组复制到该字符串?
基本上,我想将固定 float 组的内存区域转储为字符串。
别对我太苛刻,我还在学习c++
最佳答案
像这样:
#include <algorithm>
#include <string>
float data[10]; // populate
std::string s(sizeof data);
char const * p = reinterpret_cast<char const *>(data);
std::copy(p, p + sizeof data, &s[0]);
请注意,sizeof data
与10 * sizeof(float)
相同,即数组中的字节数。
更新:正如 James 所建议的,您可以做得更好,一次性完成:
char const * p = reinterpret_cast<char const *>(data);
std::string s(p, p + sizeof data); // beginning + length constructor
甚至:
#include <iterator>
std::string s(reinterpret_cast<char const *>(std::begin(data)), // begin + end
reinterpret_cast<char const *>(std::end(data))); // constructor
关于C++ - 将 float 组转换为 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17964859/