繁体   English   中英

从不复制的 char 指针创建 std:char 数组

[英]Create a std:array of char from a char pointer without copy

在 C++ 中,是否可以在不复制数据的情况下从 char 指针创建 std::array of char(或 std::vector)?

我知道我可以写这样的东西,但是数据被复制到数组中,这没有优化:

#define  BUFFER_SIZE       256

...

char *buffer;
std::array<char, BUFFER_SIZE> data(buffer, buffer + BUFFER_SIZE);

我想要一个通过指针传递数据而不复制数据的解决方案。

不,真的。 Arrays 和向量拥有它们的数据。 字符串是一样的。

我想要一个通过指针传递数据而不复制数据的解决方案。

好吧,您总是可以通过引用传递,但当然,如果您在例行程序中更改它......好吧......它会改变它。

对于字符,您可以使用 COW 字符串 (Moooooo.) 或 Copy On Write 字符串。 这里的想法是,仅当您实际尝试更改字符串时才制作字符串数据本身的副本。 所以这是两全其美的。 不幸的是(或者幸运的是,取决于您的观点)标准库字符串不是一个。 如果我没记错的话,一些旧的 STL 字符串曾经是这样实现的,如果您对 C++ 相当熟练,您当然可以在短时间内编写自己的字符串。 或者你可能会在某个地方找到一个浮动的实现。 我有一个我已经使用了 30 年的,它对我的目的来说足够好用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM