string in structure and fread()
Jonathan Wakely
jwakely.gcc@gmail.com
Mon Dec 26 11:57:00 GMT 2011
2011/12/25 Juan Ramírez:
> Hi,
>
> If you want to write and read a raw structure to a file, using c++
> objects is NOT recommended at all! At least not using fread/fwrite
What do you mean by "c++ objects"?
A POD struct is a "c++ object"
Assuming you mean non-POD class types with non-trivial constructors
and/or non-POD members, I strongly disagree, there is nothing wrong
with doing IO with suh types, you just need to write the IO code
correctly, which is always true.
> Given that fields have fixed length, a good solution could be using a
> raw char array, something like this:
>
> #define FIELD_LENGTH 101
>
> struct book {
> char name[FIELD_LENGTH];
> char author[FIELD_LENGTH];
> char publisher[FIELD_LENGTH];
> char translator[FIELD_LENGTH];
> bool translation;
> bool stock;
> };
That solution is useless if the strings can be arbitrarily long, a
better solution is to store the strings in the file as
null-terminated, or length-prefixed, and in either of those cases
managing the strings in the program will be simpler with std::string.
More information about the Gcc-help
mailing list