繁体   English   中英

如何在C ++中将std :: string传递给const unsigned char **

[英]How to pass std::string to const unsigned char ** in C++

如何将std :: string传递给unsigned char **?

例:

/* Func declaration */
void get_string(const unsigned char **str, int *len) {

/* Caller func */
std::string str;
int len = 0;
get_string((const unsigned char **)str.c_str(), &len)      // Can we do this?

您需要阅读get_string的文档并了解期望参数的语义。

我现在假设参数都是输出参数,并且将视图输出到存在别名的字符串上。

std::string管理一个字符串,它不能仅用作视图。 因此,您需要创建一个新字符串,该字符串是正在查看的字符串的副本。 代码可以是:

unsigned char const *s;
int len;
get_string(&s, &len);
std::string str( (char*)s, len );

如果您的编译器是最新的语言标准(C ++ 17),则可以使用以下视图:

std::string_view str( (char*)s, len );

当然,假定该视图足以满足您以后打算使用它的需要。

暂无
暂无

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

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