2017-04-06 10 views
2

符号なし文字列を取得する方法を探していました。 だから私はこのStrings of unsigned chars符号なし文字列の作成が不可能

につまずいたので、答えは次のように新しい型定義を作成することです:

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
かかわらず charsignedか、ご使用のプラットフォーム上 unsignedcharunsigned charであるかどうかの

、およびsigned charすべての異なるタイプです。むしろintおよびlongのように、ビット数および補数スキームの数が同じであっても、異なるタイプです。

だから、私はリテラルconst char[7]読み取り専用自然を強調するためにconst資格を挿入した

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

とのより良い運を持っていると思います。

+0

愚かな私!ありがとうございました! 私はpのキャストが必要だと思います: unsigned char * p =(unsigned char *) "123123"; –

+0

はい、そうです。私たちは共同で公開します! – Bathsheba

+0

ありがとう、良い先生! :) –

関連する問題