其他分享
首页 > 其他分享> > c – 如何使用std :: string或其等价物包装char的普通缓冲区?

c – 如何使用std :: string或其等价物包装char的普通缓冲区?

作者:互联网

动机:

我正在使用一些库(我无法控制)具有以下功能:

char* foo(/*some parameters here */);

它返回一个非常长的以null结尾的字符串.现在,我想使用该功能

void bar(const std::string& s);

这是我正在使用的另一个库中可用的(也就是说,我不控制这些函数中的任何一个的签名).我想将foo()的结果传递给bar() – 而不复制它.

题:

我想用字符串对象包装一个连续的字符缓冲区,因此它可以作为const std :: string&amp ;.传递.我怎样才能做到这一点?

笔记:

>我意识到这可能是不赞成的,但无论如何我都想这样做,如果有可能的话.
>是的,这可能是不合适的,或丑陋的,或者太像C样 – 但这是我(我想)需要做的事情.
>对答案的评论表明继承std :: string不是一个选项,因为它没有适当的虚方法.这基本上让我们假设有关实现的事情(或为不同的实现编写不同的代码),以及’手工构造’std :: string实例.因此,问题似乎是关于这样做.

解决方法:

不,你不能.检查您的要求并消除对此的需求.

标签:idiomatic,c,string,wrapper
来源: https://codeday.me/bug/20190722/1506909.html