2012-04-17 11 views
2

この質問はLoading a file into a vectorとよく似ています。しかし、この場合、それを符号なしの文字列のベクトルにロードします。ファイルをベクトルにロードする<unsigned char>

他の質問のコードを使用すると、無署名のcharベクターをロードする最も良い方法は何ですか? 'にunsigned char型の*' から 無効の変換 'のstd :: basic_istream :: CHAR_TYPE *を{別名のchar *}':

std::vector<char> vec; // Would like this to be std::vector<unsigned char> vec; 
std::ifstream file; 
file.exceptions(
    std::ifstream::badbit 
    | std::ifstream::failbit 
    | std::ifstream::eofbit); 
file.open("test.txt"); 
file.seekg(0, std::ios::end); 
std::streampos length(file.tellg()); 
if (length) { 
    file.seekg(0, std::ios::beg); 
    vec.resize(static_cast<std::size_t>(length)); 
    file.read(&vec.front(), static_cast<std::size_t>(length)); 
} 

答えて

6

変更std::vector<char> vec;std::vector<unsigned char> vec;

+0

に私はそれを次のコンパイルエラーをして取得するとき –

+4

@MachoMatt read関数の呼び出しの最初の引数にキャストを追加します: 'reinterpret_cast (&vec.front())' –

+0

@ benjamin-lindleyのコメントで受け入れられました。受け入れられた回答とコメントの両方が必要です。 –

関連する問題