2017-04-06 40 views
2

我正在尋找一種獲取無符號字符串的方法。 所以我在此Strings of unsigned chars無法建立字符串的結構

跌跌撞撞因此,答案如下:創建一個新的typedef:

typedef std::basic_string<unsigned char> ustring; 

的事情是,我不能用這個來構建。當我嘗試:

char *p = "123123"; 
auto s = ustring(p); 

我得到以下錯誤:

no instance of constructor "std::basic_string<_Elem, _Traits, 
_Alloc>::basic_string [with _Elem=unsigned char, 
_Traits=std::char_traits<unsigned char>, _Alloc=std::allocator<unsigned 
char>]" matches the argument list 

可有人請闡明這個問題一些輕?

在此先感謝!

+1

如果您丟棄了C標籤並用內嵌文本替換了您的圖像,那麼這將是一個不錯的問題。 – Bathsheba

+0

謝謝,現在這是一個很好的問題。有一個upvote。 – Bathsheba

回答

2

無論char是否是signedunsigned你的平臺上,charunsigned charsigned char所有不同類型。而不是像intlong是不同的類型,即使它們具有相同數量的位和補碼方案。

所以你有更好的運氣與

const unsigned char* p = (const unsigned char*)"123123"; 

在那裏我已經插入const資格強調只讀性質const char[7]字面的。

+0

傻我!謝謝! 我想我需要一個演員爲p: unsigned char * p =(unsigned char *)「123123」; –

+0

糟糕。是的,你會的。我們將共同發佈! – Bathsheba

+0

謝謝你,先生! :) –