I'm used to serializing data to disk using narrow character streams. However, now I need to serialize data using a wide character stream.
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();
}
When using narrow character streams, the lines in bold can be written as:
Code:
outfile.write((char*)ulVersion,sizeof(long)*6);
infile.read((char*)ulVersion,sizeof(long)*6);
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.