C++-将浮点数组转换为std::string
C++ - Convert array of floats to std::string
我有一个固定长度的浮点数组。现在我想把这个数组转换成一个二进制字符串。
我无法使用const char *
,因为我的字符串将包含空字节。在这种情况下,我将如何使用memcpy?我已经尝试过reinterpret_cast<string *>
,但它不起作用,因为字符串还/只存储指向数据开始和结束的指针(如果我错了,请纠正我)。
我已经在构建一个空字符串:
string s;
s.resize(arr_size);
但是我该如何将浮点数组复制到那个字符串中呢?
基本上,我想将固定浮点数组的内存区域转储到字符串中
别对我太苛刻了,我还在学习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
将数组的所有字节都放入字符串很容易:
std::string
bitwiseDump( float const* begin, float const* end )
{
return std::string( reinterpret_cast<char const*>( begin ),
reinterpret_cast<char const*>( end ) );
}
但为什么呢?除了复制,你对这个字符串无能为力它返回到相同类型的数组中。(即使用于该用途,CCD_ 5或CCD_更自然。而且不那么令人困惑。)
看看这个。。。
#include <iostream>
#include <array>
#include <string>
int main()
{
std::string floatString;
std::array<float, 5> data = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f};
for (auto& element : data)
floatString.append(std::to_string(element));
std::cout << floatString;
std::cin.get();
}
相关文章:
- 将无符号char*转换为std::istream*C++
- 将 int 数组转换为 std::vector<int*>
- 如何将这个std::字符串转换为std::基本字符串
- 哪些类型可以转换为std::any
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将函数参数"const char*"转换为"std::string_view"是
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 字符转换功能 std::isupper() & std::islower() C++17
- 将函数包装器转换为 std::function
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- std::转换move构造函数的模板专业化的变体
- STD ::转换如何用特定值初始化函子
- 对C++字符串使用 std 转换
- 等价于元组的std::转换
- std::转换为任意容器
- std::转换顺序保证
- std::转换产生奇怪的输出