Я пробовал следующий код как с обычными ifstreams, так и с текущим бустом: iostream, который я использую, оба имеют одинаковый результат.
Он предназначен для загрузки файла из Physfs в память, а затем передачи его обработчику для обработки (например, изображения, аудио или данных). В настоящее время, когда вызывается c_str, он возвращает только небольшую часть файла.
PhysFS::FileStream file("Resources/test.png" , PhysFS::OM_READ);
if(file.is_open()) {
String* theFile;
theFile = new String((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
String::iterator it;
for ( it=theFile->begin() ; it < theFile->end(); it++ ) {
std::cout << *it;
} // Outputs the entire file
std::cout << theFile->c_str(); // Outputs only the first few lines
}
Цикл итератора выводит весь png-файл, как и ожидалось, но вызов c_str возвращает только первые несколько символов (\ 211PNG).
Я довольно долго пробовал варианты этого кода, но безуспешно. Есть идеи?