参考了http://forums.codeguru.com/showthread.php?457106-Unicode-text-file示例。

class WOFSTREAM : public std::ofstream
{
public:

	WOFSTREAM()
	{

	}

	WOFSTREAM(const wchar_t *path)
	{

		setlocale(LC_ALL,"");
		size_t sz=-1;
		char szPath[MAX_PATH]={0};
		wcstombs_s(&sz,szPath,sizeof(szPath),path,_TRUNCATE);

		cout<<szPath<<"\n";
		open(szPath,ios::binary);//注意此处如不指定binary,ostream对象被默认视为对文本进行操作,会额外在行末添加字符:0x0D
		this->WriteBOM();
		setlocale(LC_ALL,"C");
	}


	WOFSTREAM& operator <<(const wchar_t* text)
	{
		const char *pData = (const char *)text;
		const unsigned int length = wcslen(text) * sizeof(text[0]);
		write(pData, length);
		return *this;
	}
	WOFSTREAM& operator <<(unsigned short ch)
	{
		const char *pData = (char *)&ch;
		const unsigned int length = sizeof(ch);
		write(pData, length);
		return *this;
	}

	WOFSTREAM& operator<<(WOFSTREAM& (*pfunc)(WOFSTREAM&))
	{
		return ((*pfunc)(*this));
	}

protected:
	void WriteBOM()
	{
		const static wchar_t BOM = 0xfeff;
		write((const char *)&BOM, sizeof(BOM));
	}

};
WOFSTREAM& endl(WOFSTREAM& wf)//重载换行符
{
	wf<<0x000D<<0x000A;
	return wf;
}

//使用:
int __cdecl main()
{

	WOFSTREAM wf2(L"xx2.txt");
	if (wf2.good())
	{
		wf2<<L"一个世界一个梦想"<<endl;
		wf2<<L"one world one dream";
		wf2.flush();
		wf2.close();
	}
	else
	{
		cout<<"bad!"<<endl;

	}

getchar();
return 1;

}

使用Unicode写文本文件:一个简单类的示例的更多相关文章

  1. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  2. 写了一个简单可用的IOC

    根据<架构探险从零开始写javaweb框架>内容写的一个简单的 IOC 学习记录    只说明了主要的类,从上到下执行的流程,需要分清主次,无法每个类都说明,只是把整个主线流程说清楚,避免 ...

  3. 写了一个简单的 Mybatis

    写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...

  4. 写了一个简单的CGI Server

    之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看 ...

  5. 自己写的一个简单PHP采集器

    自己写的一个简单PHP采集器 <?php //**************************************************************** $url = &q ...

  6. [MySQL5.6] 一个简单的optimizer_trace示例

    [MySQL5.6] 一个简单的optimizer_trace示例   前面已经介绍了如何使用和配置MySQL5.6中optimizer_trace(点击博客),本篇我们以一个相对简单的例子来跟踪op ...

  7. 一个简单的CSS示例

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 & ...

  8. 利用HttpClient写的一个简单页面获取

    之前就听说过利用网络爬虫来获取页面,感觉还挺有意思的,要是能进行一下偏好搜索岂不是可以满足一下窥探欲. 后来从一本书上看到用HttpClient来爬取页面,虽然也有源码,但是也没说用的HttpClie ...

  9. 今天写了一个简单的新浪新闻RSS操作类库

    今天,有位群友问我如何获新浪新闻列表相关问题,我想,用正则表达式网页中取显然既复杂又不一定准确,现在许多大型网站都有RSS集合,所以我就跟他说用RSS应该好办一些. 一年前我写过一个RSS阅读器,不过 ...

随机推荐

  1. 009 Android Fragment动态用法(实现动态菜单栏)设置控件为满屏状态

    ·1.MainActivity采用线性布局 2.在app--->res--->layout,右击new--->xml---->layout xml FILE <1> ...

  2. C++_标准模板库STL概念介绍3-函数对象

    函数对象也叫做函数符(functor). 函数符是可以以函数方式和( )结合使用的任意对象. 包括函数名,指向函数的指针,重载了()运算符的类对象. 可以这样定义一个类: class Linear { ...

  3. Linux之旅(二)

    上一章讲到,mysql 安装遇到问题 ...莫名其妙好了,此处已回想不起为什么好了,只得跳过. 六.安装php7 参考教程[ http://www.thinkphp.cn/topic/48196.ht ...

  4. 基于 Pymsql 数据库连接池

    helper.py import pymysql from settings import Config def connect(): conn = Config.POOL.connection() ...

  5. vue的eventBus

    首先在main.js中 Vue.prototype.$eventBus = new Vue() A组件中通过触发事件或者其他什么,然后发射数据 this.$eventBus.$emit('key',' ...

  6. Codeforces - 675D 可持久化Treap 树形操作

    题意:模拟二叉树的构造过程,给出\(n\)个节点,每次从根插入,小于当前节点转到左儿子,否则右儿子,输出第\([2,n]\)个节点的父亲的权值 直接手动模拟会被链式结构T掉 网上找了下发现二叉树的性质 ...

  7. LightOJ - 1234 分块预处理

    求∑1/i,但是范围很大 和bitmap的想法一样,分个块,均摊复杂度就降下来了 //到底排行榜上的0ms是怎么做到的? #include<bits/stdc++.h> using nam ...

  8. [转] CSS 选择器参考手册

    [From] http://www.w3school.com.cn/cssref/css_selectors.asp CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. ...

  9. HTTP security headers 安全头例子

    这是从以下网站测试得到的结果,参考测试项目可以知道哪些安全头应该如何设置. https://observatory.mozilla.org/analyze.html?host=appcanary.co ...

  10. 第二次 Scrum Meeting

    第二次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/4/4 19:00 20min 微信群 附Github仓库:WEDO 例会照片 清明假期期间 线上小组例会 工作情 ...