![](/img/trans.png)
[英]C++ turn a std::tuple<char, char, char> into a std::string?
[英]Making a std::string out of a Char* in C++
OSX 10.8,碳纖維
我有一個想要從Char *派生的std :: string *
例:
CFStringRef *s;
char *c[128];
CFStringGetCString(*s, *c, 128, kCFStringEncodingUTF8);
int size = sizeof(c);
g_uid.assign(c, size);
但是我得到的轉換無效,我不明白為什么
error: invalid conversion from 'char**' to 'long unsigned int'
std::string g_uid = "";
被定義為全局
您對星號過於寬容-通常不需要指向CFStringRef
的指針,並且您的數組實際上是一個指針數組,這不是您想要的。
它看起來應該像這樣:
CFStringRef s;
char c[128];
if (CFStringGetCString(s, c, 128, kCFStringEncodingUTF8))
{
g_uid = c;
}
else
{
// 128 characters wasn't enough.
}
如果c
為char*
,則可以進行以下操作:
g_uid.assign(c, size);
問題是c
不是char*
,它是128個char*
s的數組:
char *c[128];
這是C / C ++中常見的初學者錯誤。 我記得在同一天犯了同樣的錯誤。 像char *c[128];
這樣的聲明char *c[128];
可能會導致您相信,但沒有提供128個字符的數組。 實際上,它為您提供了一個指向char
的128個指針的數組。 你不要那樣
您要聲明一個128個字符的數組,如下所示:
char c[128];
現在,您可能不認為c
是char*
因為您看不到任何*
但是在每次聲明某物數組時,該變量將自動成為您指定的任何類型的指針。 它實際上指向數組的第一個元素的地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.