Hey, I came here to ask for help with my little project, where I need to write to binary file and read from it with other program. I made a simple test programs that does the thing I need - One of them writes a simple struct with 2 member variables (std::string and int), and the second program reads that file, using the same struct. all went well with int type variable, but std::string variable didn`t showed at all or made program crash.
Here is bouth sources of those simple programs:
Writer
Code:
#include <iostream>
#include <fstream>
#include <string>
struct CTest
{
int number;
std::string text;
};
int main()
{
std::ofstream output("level.map", std::ios::binary);
CTest obj;
obj.number = 255;
obj.text = "testing...";
output.write((const char*)(&obj), sizeof(obj));
output.close();
std::cin.get();
return 0;
}
Reader
Code:
#include <iostream>
#include <fstream>
#include <string>
struct CTest
{
int number;
std::string text;
};
int main()
{
std::ifstream input("level.map", std::ios::binary);
CTest buffer;
input.read((char*)(&buffer), sizeof(buffer));
std::cout << buffer.number << std::endl;
std::cout << buffer.text << std::endl;
std::cin.get();
return 0;
}
What am I doing wrong, and how to write struct with std::string type member correctly? Hope to get some help.