I'm used to serializing data to disk using narrow character streams. However, now I need to serialize data using a wide character stream.When using narrow character streams, the lines in bold can be written as:Code:#include <iostream>
#include <string>
using std::cout;
using std::endl;
enum
{
ver1 = 0xE0000001,
ver2 = 0xE0000003,
ver3 = 0xE0000004,
ver4 = 0xE0000001,
ver5 = 0xE0000003,
ver6 = 0xE0000001
};
int main()
{
std::wofstream outfile("awesome.txt");
long ulVersion[6];
ulVersion[0] = ver1;
ulVersion[1] = ver2;
ulVersion[2] = ver3;
ulVersion[3] = ver4;
ulVersion[4] = ver5;
ulVersion[5] = ver6;
for(int i = 0; i < 6; i++)
cout << ulVersion[i] << endl;
outfile.write((wchar_t*)ulVersion,sizeof(long)*6);
if(!outfile)
cout << "Problem?" << endl;
outfile.close();
cout << endl;
std::wifstream infile("awesome.txt");
infile.read((wchar_t*)ulVersion,sizeof(long)*6);
for(int i = 0; i < 6; i++)
cout << ulVersion[i] << endl;
if(!infile)
cout << "Problem?" << endl;
infile.close();
}
I'm not sure what changes I need to make in wide character world; I haven't found any good references. Obviously, the streams are in a bad state after the read/write operation. I'm not sure why, though.Code:outfile.write((char*)ulVersion,sizeof(long)*6);
infile.read((char*)ulVersion,sizeof(long)*6);