Я пробовал использовать следующий код как с обычными ifstream, так и с текущим повышением: iostream, который я использую, имеет одинаковый результат.C++ c_str не возвращает целую строку
Предназначен для загрузки файла из 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).
Я пробовал варианты этого кода в течение некоторого времени без успеха. Есть идеи?
Как я могу это исправить? У меня нет большого опыта в строках стиля С –
Не использовать c_str() - манипулировать с помощью std :: string – Mark
Я использую библиотеку, которая требует ввода строки c. –