今天花了半天時間,將開發環境更換為了VC2005,不容易啊。。終于可以看迭代器了
記下一些移植中解決的問題
Log4cplus1.0.2 要在vs2005上編譯需要將include中的stringhelper.h的118行左右添加如下代碼:
typedef std::output_iterator_tag iterator_category;
并且將128行左右的__value改名,例如改成__rvalue
hash_map
從std 換到了 stdext
VC++ 2005中fstream對象無法訪問中午路徑下的文件
在用ifstream和ofstream打開文件前設置全局locale為本地環境,打開文件后再設置回去。
ofstream writefile;
string filename=("d:\我的文檔\測試.txt");
locale loc = locale::global(locale("")); //要打開的文件路徑包含中文,設置全局locale為本地環境
writefile.open(filename.c_str(),ios::out); //打開文件
locale::global(loc);//恢復全局locale
用locale對象的name方法可以看到,通過locale("")構造出的locale對象的
name為"Chinese_People's Republic of
China.936",而原始的locale對象的name為"C",也就是缺省的ANSI_C公約。
注意:如果使用locale loc =
locale::global(locale(""))設置全局locale后沒有用
locale::global(loc)恢復的話,那么在程序后面的cout語句就不能輸出中午了,雖然這時候操作中文文件沒有問題,但是這也是很容易讓
人掉入陷阱的地方,應該值得注意。