基于windows API 的 用CString 保存Unicode 文本的代码示例

要完成课程作业 遗传算法示例,需要把一些信息保存到文本当中。 左右折腾几个小时,最后完美解决一些问题。

比如:   1. 用UlteraEdit 打开时,总提示是否讲文本转换到dos 格式。

2. cstring 保存会被截掉一般。


	
	FILE * myfile;
	myfile = CreateFile(_T("D:\\SGAdata.txt"),GENERIC_WRITE,
				FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	if(myfile == INVALID_HANDLE_VALUE)
		TRACE("open File error !");
	DWORD bytesWriten = 0;
	WCHAR UnicodeHeadFlag = 0xfeff;  // 这个是表示本文是Unicode 文本,必须要写。   
					//由于大段\小段存储的原因,本来的标准Unicode 头 FF FE 要写成 FE FF
	if (WriteFile(myfile,&UnicodeHeadFlag,sizeof(WCHAR),&bytesWriten,NULL))
	{
		TRACE("write file success. %d byte is written .\n",bytesWriten);
	}
	FlushFileBuffers(myfile);
	CString str(_T("******************************************\r\n")); // 这是要保存的 CString  
								//  在后面的 \r\n 能完美解决 提到的问题一 。
	if (WriteFile(myfile,str,str.GetLength()*2,&bytesWriten,NULL))
	{		 //  这里的 str.GetLength()*2  也需要注意,这个能解决问题二。
		TRACE("write file success. %d byte is written .\n",bytesWriten);
	}
	FlushFileBuffers(myfile);
	str = _T("            This File Is The Output Data for SGA          \r\n");
	if (WriteFile(myfile,str,str.GetLength()*2,&bytesWriten,NULL))
	{
		TRACE("write file success. %d byte is written .\n",bytesWriten);
	}
	FlushFileBuffers(myfile);
	str = (_T("******************************************\r\n"));
	if (WriteFile(myfile,str,str.GetLength()*2,&bytesWriten,NULL))
	{
		TRACE("write file success. %d byte is written .\n",bytesWriten);
	}
	FlushFileBuffers(myfile);

	对了,最后还要用closehandle 关闭文件。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值