C++ - 将 float 组转换为 std::string

标签 c++ arrays casting

我有一个固定长度的 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 data10 * 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/

相关文章:

javascript - 将字符串转换为具有多个条目的单个数组

java - 如何从另一个类填充我的数组?(Java)

c - 如何更新 X86 中 double 组中的所有元素?

sql - PostgreSQL:如何将带有 float 的字符串转换为整数?

c++ - 如何去掉 QSpinBox 中的前导零

c++ - 如何在类中使用数组变量? C++

c++ - 在哪里可以下载 pthread.h、semaphore.h 及其库?

c++ - CMake add_compile_options 在适当的时候会影响链接器选项吗?

java - 将对象(double 类型)转换为 int

c++ - 如何在C++中绑定(bind)变量