Well, what do you want to have in the file?
If you want a "human readable" text file (e.g. CSV), then there will be
no other way than iterating the vector, convert each of the three fields of each
Test
element into text, and write that text into the output file.
...either that, or use some sort of "serialization" library.
Of course, you can always just dump your
Test
elements into the file as "binary" data, if you want to:
1 2 3 4 5 6
|
std::fstream file;
file.open("test.bin", std::ios::out | std::ios::trunc | std::ios::binary);
for (vector<Test>::const_iterator iter = vec.cbegin(); iter != vec.cend(); iter++)
{
file.write(reinterpret_cast<char*>(&(*iter)), sizeof(Test));
}
|
But then you should also change your struct like this, to ensure a
fixed size in a
platform-independent way:
1 2 3 4 5 6 7 8 9
|
#include <stdint.h>
#define MAX_STRLEN 256U
struct Test
{
int32_t number;
uint8_t flag;
char text[MAX_STRLEN];
};
|
Also note that you may need to deal with
byte order (LE vs. BE) when exchanging data between platforms!
(Note: We use a
fixed-size char
-array to store the string here, to ensure that each record has a
fixed size. If you want to store your strings with "true"
variable length, then some more work will be required; it could be achieved with a "flexible array member", but then writing/reading the struct will
not be simple anymore!)