先看程序:
#include "stdafx.h"
#include <fstream>
int _tmain(int argc, _TCHAR* argv[])
{
std::wofstream test(L"Test.Log");
test << L"hello 中文";
return 0;
}
UNICODE编译、调试;结果中Test.Log文件的内容只有“hell”没有“中文”。
这是因为C++标准库的国际化设计问题,你需要设置locale。
#include "stdafx.h"
#include <fstream>
#include <locale>
int _tmain(int argc, _TCHAR* argv[])
{
std::wofstream test(L"Test.Log");
test.imbue( std::locale("CHS") );
test << L"hello 中文";
return 0;
}
再调试,不是有“中文”了?
Boost.Log 已被Boost库正式接受,但还没有包括在1.43.0版本中,下面是我在Boost_1_43_0中编译它的办法:
环境:
1.Boost库1.43.0版,下载地址
http://www.boost.org;
2.Boost.Log 1.0版,下载地址
http://sourceforge.net/projects/boost-log/;
3.编译工具VS2008
编译:
1、解压 boost_1_43_0, 解压 Boost-log-1.0.zip;
2、将Boost-log-1.0\boost下的Log目录拷入boost_1_43_0\boost目录中;
3、将Boost-log-1.0\libs下的Log目录拷入boost_1_43_0\libs目录中;
4、从开始\程序组中,进入VS2008 命令提示-DOS窗口;
5、切换到boost_1_43_0的根目录,执行bootstrap.bat文件,将生成bjam工具;
6、执行命令 bjam
7、将生成boost 库文件(boost_1_43_0\stage),其中包括log的库文件。
后记。上面的懒办法带来的是长时间编译时间等待和大量硬盘空间被占用,且生成的大部分文件你根本就不会用到。
建议是了解一下bjam命令,只编译你需要的库,如下编译Boost.Asio:
bjam --with-system --with-thread --with-date_time --with-regex --with-serialization stage
今天打开gmail处理一封为关于为客户配置安全网关方案的邮件,无意中在gmail的右边栏中,发现一个“秘密”,注意“祥细了解...".那里
gmail 居然根据我的邮件内容向我投放了类似广告内容:安全网关与防火墙,VPN是功能类似的产品。
感想一:gmail做的真不错,能根据内容投防广告。
感想二:gmail会不会根据我的邮件提取商机信息?进一步,他会不会出卖我的商机信息?
感想三:如果我的邮件谈论了一些个人隐私、组织敏感信息、商业情报、国家秘密。。。我是不是会被盯上。。。
突然感觉我在gmail里是一丝不挂的了。。。。
软件设计过程是不是有点先“盲人摸象”后“庖丁解牛”的味道,从摸清楚个别部分到组装成整体,到最后达到见木又见森林的,设计起来游刃有余。
弄一个既免费,又专业,又功能强大的C++开发环境是现实存在,它不是梦.
我的方案是:
VC 2005 Express
PSDK
ResEdit
VC 2005 Express 不是只能写"hello Bill :)"之类的控制台程序,它一样可能开发win32程序,这在MSDN中都有说明,同正式版相比.除了不具备资源编辑器之外,功能同正式版是一样的.
要开发win32程序,光VC2005 Express是不够的,你还得需要PSDK,这也是免费的,你需要下载.
至于如何安装设置,我就不详说了,你google吧,现成的多的是.
RegEdit是个免费的资源编辑器,它可以用来补充vc 2005 Express的不足.
(但我用它时,发现对中文支持不好,后找了个resource builder来用,它是收费的.试用期只有30天.resource builder 功能强大, 确实不错,还有即时测试功能, 嗳,只采取另一种方式来用resource builder了 :-) ).
我是在用WTL 8.0,WTL要命的还提供了一个VC2005 Expres下的开发向导文件,哈哈,你只要双击那个XXvc8X.js文件,就万事OK了.WTL为你提供了丰富的程序类型.
上面就是我所谓的免费方案.
你也可以享用它.......
窗口系统都的自已的消息或事件处理机制.在自有的应用系统中,在编写GUI时一般我们都会依赖这个机制作出一些事件/时机的判断.这里有个设想:一种处理方式是,在捕获到这些事件/时机时,又通过这个消息机制去触发新的(想发生的事件).另一种是直接了当的,自已写一个事件处理机制,自已处理掉...
(编写中遇上的一点感想..)
高举C++和Java的伟大旗帜,在无数coder先驱开辟的道路上前进。。。。