Я пытаюсь записать напрямую в выходной буфер fstream, чтобы избежать memcpy
.
Почему следующий код не работает?
Он компилирует, запускает и создает выходной файл нужной длины в Linux. Но выходной файл не содержит правильный текст. Также обратите внимание, что по какой-то причине, когда я закомментирую две строки, включающие str2
, создается выходной файл нулевой длины.
Примечание: Этот пример не избегает memcpy
, но если он сработает, он поможет мне избежать memcpy
в моем приложении.
#include <fstream>
int main(int argc, char *argv[]) {
std::fstream out;
char buffer[512];
out.rdbuf()->pubsetbuf(buffer, 512);
out.open("file.txt", std::fstream::out);
char *str1 = "test text.";
strcpy(buffer, str1);
out.rdbuf()->pubseekpos(strlen(str1), std::ios_base::out);
char *str2 = "why?";
out << str2;
out.flush();
out.close();
}