2016-10-25 23 views
1

私の小さなプロジェクトでは、ビットマップをハッシュしようとしています。ビットマップは、 "BMP1/0 ビットマップデータ"のようです。null文字列ターミネーターをC++の文字列で省略する

std::string md5(const std::string); 

私が作るしようとした場合、私は、メモリの途中で文字列の終端を持っているので、問題は、次のとおりです。私は、インターネット上で発見し、それはのように単純に動作しMD5ハッシュライブラリを使用していますこのメモリからの文字列、私はビットマップデータではなく、最初の部分だけを持つことができます。だから、私の質問は、私はここで文字列を完成させることはできませんし、それにすべてのデータを取ることができますです。前もって感謝します。

+2

'std :: vector 'を代わりに使用してください。 –

+1

'std :: string' *はNULバイトを含むことができます。 'char *'はできません。 NULバイトを含む 'char'バッファから' std :: string'を構築するには、[constructor 4 here](http://en.cppreference.com/w/cpp/string/basic_string/basic_string)を使います。それが実際にあなたが尋ねているものであるかどうか分からない場合は、詳細を追加できますか?つまり、πάνταῥεprobablyはおそらく正しいでしょう。md5は実際に文字列ではなく、より多くのバイト配列です。したがって、 'std :: vector'はおそらくより良い一致です。 – BoBTFish

+0

皆さん、ありがとうございました。私は4番のコンストラクタを使用しようと試みますが、私はベクターの事を見ていきます。 –

答えて

4

constructors that std::string providesを見ると、多くのコンストラクタの中で、NULL終了文字列を引数(5)として取るコンストラクタに加えて、文字列へのポインタを取るコンストラクタがあります、および文字の数(4)が含まれます。説明では、特に、指し示された文字列にヌル文字が含まれている可能性があることが記述されこれは、ヌルキャラクタが文字列を終了しないことを意味します。

関連する問題