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

时间:2017-12-12 23:44:58

标签: c++ pointers

如何将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?

1 个答案:

答案 0 :(得分:2)

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

我现在要假设这些参数都是输出参数,并且它会将视图输出到一个alraedy存在的字符串中。

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 );

当然假设视图足以满足您以后想要处理的任何内容。