2012-04-17 2 views
2

Этот вопрос очень похож на Loading a file into a vector; однако в этом случае я хочу загрузить его в вектор беззнаковых символов.Загрузка файла в вектор <unsigned 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

Я получаю следующее сообщение об ошибке компиляции при выполнении этого: недопустимого преобразования из 'неподписанного символа *' до 'станд :: basic_istream :: char_type * {аки символа *}' –

+4

@MachoMatt Добавить бросок к первому аргументу вашего вызова функции чтения: 'reinterpret_cast (& vec.front())' –

+0

Принято с комментарием @ benjamin-lindley. Требуется как принятый ответ, так и комментарий. –