我正在寻找一个可以在 memcopy 环境中使用的具有固定大小的字符串实现,并且可以简单地构造和复制。
我找到了 boost beast static_string,但是如果我的示例是偶然起作用的,IDK 会怎样?
#include <algorithm>
#include <iostream>
#include <boost/beast/core/static_string.hpp>
boost::beast::static_string<16> s1("abc");
int main(){
boost::beast::static_string<16> s2;
std::copy_n((char*)&s1, sizeof(s2), (char*)&s2);
s1.push_back('X');
std::cout << "--" << std::endl;
std::cout << s2 << std::endl;
s2.push_back('Y');
std::cout << s2 << std::endl;
std::cout << std::is_trivial_v<decltype(s2)> << std::endl;
}
注意:最后一行说 type 不是简单可复制的,但可能只是 Vinnie 忘记添加类型特征。
PS 我知道这通常是个坏主意,我要替换的更糟糕的是,只是一个普通的 C 数组并修改分配/复制以支持 std::string 的工作要多得多。