c – 如何使用std :: string或其等价物包装char的普通缓冲区?
作者:互联网
动机:
我正在使用一些库(我无法控制)具有以下功能:
char* foo(/*some parameters here */);
它返回一个非常长的以null结尾的字符串.现在,我想使用该功能
void bar(const std::string& s);
这是我正在使用的另一个库中可用的(也就是说,我不控制这些函数中的任何一个的签名).我想将foo()的结果传递给bar() – 而不复制它.
题:
我想用字符串对象包装一个连续的字符缓冲区,因此它可以作为const std :: string& ;.传递.我怎样才能做到这一点?
笔记:
>我意识到这可能是不赞成的,但无论如何我都想这样做,如果有可能的话.
>是的,这可能是不合适的,或丑陋的,或者太像C样 – 但这是我(我想)需要做的事情.
>对答案的评论表明继承std :: string不是一个选项,因为它没有适当的虚方法.这基本上让我们假设有关实现的事情(或为不同的实现编写不同的代码),以及’手工构造’std :: string实例.因此,问题似乎是关于这样做.
解决方法:
不,你不能.检查您的要求并消除对此的需求.
标签:idiomatic,c,string,wrapper 来源: https://codeday.me/bug/20190722/1506909.html