簡體   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