Задача проста, записать длину строки в бинарный файл, а сразу за ней саму строку (и так повторить сколько нужно раз).
Проблема в том, что сами данные записываются в файл верно (скриншот)
Но вот при считывании происходят искажения в конце каждой из строк, хотя их длинна считывается верно.
Если кто то знает решение этой проблемы, очень надеюсь на вашу помощь)
Код для воспроизведения:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ofstream fs("1.bin", ios::binary);
string first = "right_text" ;
string second = "test_text";
int size1 = first.length();
fs.write((char *) &size1, sizeof(int));
fs.write(first.c_str(), size1);
int size2 = second.length();
fs.write((char *) &size2, sizeof(int));
fs.write(second.c_str(), size2);
fs.close();
ifstream is("1.bin", ios::binary);
int size3, size4;
string third;
string fourth;
is.read((char *) &size3, sizeof(int));
char buffer1[size3];
is.read(buffer1, size3);
is.read((char *) &size4, sizeof(int));
char buffer2[size4];
is.read(buffer2, size4);
is.close();
third = string(buffer1);
fourth = string(buffer2);
cout << size1 << " " << size2 << " " << size3 << " " << size4 << " " << endl;
cout << third << " " << fourth << endl;
return 0;
}