青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我住包子山

this->blog.MoveTo("blog.baozishan.in")

讓VS2005中的fstream支持中文路徑文件打開

   前幾天發了這篇《用fstream對二進制文件的讀寫》,有朋友指出了VS2005的fstream對于中文路徑支持不好的bug。我想大概是因為VS2005更加重視了對字符串的全球化支持,所以鼓勵我們使用unicode編碼的字符串,對于MBCS之類的支持可能就疏忽了吧。

   我搜索了一下這個問題的解決,參考了如下資料寫了演示代碼。

   我綜合了以上的內容,總結了3種方法,能夠較好解決大家的困擾,包括可能無法使用cout的問題。

   1: /********************************************************************
   2:     created:    2008/05/10
   3:     created:    10:5:2008   23:56
   4:     filename:     k:\sj\fstreamTest\fstreamTest\main.cpp
   5:     file path:    k:\sj\fstreamTest\fstreamTest
   6:     file base:    main
   7:     file ext:    cpp
   8:     author:        Gohan
   9: *********************************************************************/
  10: #include <tchar.h>
  11: #include <fstream>
  12: #include <iostream>
  13: using namespace std;
  14: int main()
  15: {
  16:     /************************************************************************/
  17:     /* 方法1,使用_TEXT()宏定義將字符串常量指定為TCHAR*類型                 */
  18:     /* 如果是我,首選此類型                                                 */
  19:     /************************************************************************/
  20:     fstream file;
  21:     file.open(_TEXT("c:\\測試\\測試文本.txt"));
  22:     cout<<file.rdbuf();
  23:     file.close();
  24:  
  25:     /************************************************************************/
  26:     /* 方法2,使用STL中的locale類的靜態方法指定全局locale                   */
  27:     /* 使用該方法以后,cout可能不能正常輸出中文,十分蹊蹺                    */
  28:     /* 我發現了勉強解決的方法:不要在還原區域設定前用cout或wcout 輸出中文   */
  29:     /* 否則后果就是還原區域設定后無法使用cout wcout輸出中文                 */
  30:     /************************************************************************/
  31:     locale::global(locale(""));//將全局區域設為操作系統默認區域
  32:     file.open("c:\\測試\\測試文本2.txt");//可以順利打開文件了
  33:     locale::global(locale("C"));//還原全局區域設定
  34:     cout<<file.rdbuf();
  35:     file.close();
  36:  
  37:     /************************************************************************/
  38:     /* 方法3,使用C函數setlocale,不能用cout輸出中文的問題解決方法同上      */
  39:     /************************************************************************/
  40:     setlocale(LC_ALL,"Chinese-simplified");//設置中文環境
  41:     file.open("c:\\測試\\測試文本3.txt");//可以順利打開文件了
  42:     setlocale(LC_ALL,"C");//還原
  43:     cout<<file.rdbuf();
  44:     file.close();
  45: }
  補充一下,第一種方法,如果不是靜態字符串當作路徑的話,記得傳入TCHAR*類型字符串作為路徑,應該就沒問題了。image
 

posted on 2008-05-11 01:30 Gohan 閱讀(9411) 評論(5)  編輯 收藏 引用 所屬分類: C++

Feedback

# re: 讓VS2005中的fstream支持中文路徑文件打開 2008-05-11 10:14 Leewings

好吧...我沒看懂
好友個性的cmd呀~  回復  更多評論   

# re: 讓VS2005中的fstream支持中文路徑文件打開 2008-05-11 15:16 Gohan

@Leewings
你是玩pascal的吧。cmd跟mud游戲一樣,呵呵。我現在還是完全依賴微軟,linux之類的還是要向你學習了。  回復  更多評論   

# re: 讓VS2005中的fstream支持中文路徑文件打開 2008-05-12 13:42 Leewings

現在編東西還是得在win下....因為有個delphi......
雖然linux下有個lazarus,but...跟delphi差遠了......
不過,平時使用還真的是很喜歡在ubuntu下的,哈哈.
我也是很淺層的而已啦,沒有太多的時間去深究....  回復  更多評論   

# re: 讓VS2005中的fstream支持中文路徑文件打開 2008-05-14 09:36 dayforever

使用fopen打開文件后交給fstream處理,因為fopen并不考慮unicode,這個比setlocal帶來的侵入性更低,也不會帶來cout輸出的問題  回復  更多評論   

# re: 讓VS2005中的fstream支持中文路徑文件打開 2008-05-14 19:04 Gohan

@dayforever
呵呵,試了一下,是個好方法,fstream的構造函數重載支持FILE指針參數,不過我有些疑惑如果已經存在的fstream對象如何打開一個FILE*?  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩在线另类| 欧美性大战久久久久| 一区二区三区在线不卡| 欧美在线观看视频一区二区| 亚洲尤物在线视频观看| 国产伦精品一区二区三区视频孕妇 | 99精品视频一区| 欧美三级网址| 久久www成人_看片免费不卡 | 欧美一区二区三区日韩| 亚洲男人的天堂在线观看| 国产伦理精品不卡| 久久一二三四| 欧美激情一区三区| 中国亚洲黄色| 欧美一区二区啪啪| 亚洲狠狠婷婷| 99热这里只有精品8| 国产日韩欧美日韩大片| 蜜桃av综合| 欧美日韩国产另类不卡| 欧美一区二区三区在线看| 久久久一本精品99久久精品66| 亚洲人www| 亚洲欧洲av一区二区三区久久| 国内一区二区在线视频观看| 亚洲国产精品99久久久久久久久| 欧美日韩99| 久久亚洲午夜电影| 欧美日韩专区在线| 美女视频网站黄色亚洲| 国产精品福利影院| 亚洲电影免费在线| 国产欧美日韩视频在线观看| 亚洲国产婷婷香蕉久久久久久99| 国产伦精品一区二区三区免费迷 | 一本到12不卡视频在线dvd| 欧美一区久久| 中文日韩欧美| 免费国产一区二区| 久久精品视频在线| 国产精品久久777777毛茸茸| 欧美国产一区二区| 国产一区日韩一区| 中文高清一区| 一区二区三区导航| 老司机久久99久久精品播放免费| 性欧美长视频| 欧美日韩一二区| 亚洲激情网站| 亚洲国产老妈| 久久国产直播| 久久av一区二区三区亚洲| 欧美日韩天天操| 亚洲国语精品自产拍在线观看| 狠狠色综合色区| 欧美一区二区精品久久911| 亚洲欧美日韩国产一区二区| 欧美巨乳在线| 亚洲国产小视频| 日韩亚洲国产欧美| 欧美精品v国产精品v日韩精品| 免费视频亚洲| 91久久夜色精品国产网站| 久久欧美肥婆一二区| 久久精品91久久久久久再现| 国产精品永久免费在线| 亚洲欧美视频一区| 欧美一区二区三区久久精品| 国产精品素人视频| 欧美一乱一性一交一视频| 久久精品1区| 黑人中文字幕一区二区三区| 久久精精品视频| 免费黄网站欧美| 亚洲国产成人在线| 欧美黄色视屏| 夜夜嗨av色综合久久久综合网| 亚洲无吗在线| 国产精品视频精品视频| 西瓜成人精品人成网站| 久久久久久久综合日本| 精品999在线观看| 欧美顶级艳妇交换群宴| 99亚洲精品| 欧美中文字幕在线| 1024欧美极品| 欧美精品乱码久久久久久按摩| 一二三区精品福利视频| 欧美中文字幕不卡| 亚洲国产专区| 欧美日韩视频在线第一区| 亚洲欧美电影院| 欧美激情自拍| 午夜在线精品| 最新中文字幕亚洲| 国产精品久久久久久久午夜| 欧美一区二区三区日韩| 亚洲国产欧美一区二区三区丁香婷| 宅男噜噜噜66一区二区66| 国产亚洲精品7777| 欧美激情在线观看| 欧美一级免费视频| 亚洲人成在线观看| 久久久久久网址| 亚洲色在线视频| 1024成人| 国产欧美日韩视频一区二区| 欧美激情网友自拍| 欧美在线三区| 夜夜嗨网站十八久久| 美日韩精品视频免费看| 午夜精品视频网站| 亚洲精品久久久久久久久久久| 国产精品午夜电影| 欧美精品激情blacked18| 欧美与黑人午夜性猛交久久久| 亚洲精品综合精品自拍| 老司机精品导航| 亚洲综合精品四区| 亚洲精品乱码久久久久久久久 | 国产亚洲欧美日韩日本| 欧美日韩精选| 噜噜噜噜噜久久久久久91 | 欧美高清你懂得| 欧美在线高清视频| 亚洲一区二区三区视频| 亚洲精品黄网在线观看| 在线成人国产| 国产一区二区精品久久91| 国产精品成人一区二区三区夜夜夜 | 欧美一区二区三区免费观看视频 | 亚洲激情第一区| 麻豆精品在线观看| 欧美在线精品免播放器视频| 亚洲午夜av在线| aa亚洲婷婷| 日韩视频一区二区| 亚洲韩日在线| 亚洲人体一区| 亚洲国产日韩欧美| 亚洲国产欧美一区| 亚洲国产成人91精品| 激情文学一区| 伊人久久亚洲热| 在线观看亚洲一区| 在线观看一区二区精品视频| 伊人久久噜噜噜躁狠狠躁| 黄色av日韩| 亚洲电影天堂av| 1000部国产精品成人观看| 1024精品一区二区三区| 亚洲国产成人不卡| 亚洲裸体视频| 一本色道久久精品| 亚洲尤物影院| 欧美在线视频导航| 老司机精品福利视频| 欧美电影在线播放| 亚洲国产高清在线| 99这里有精品| 午夜国产精品视频免费体验区| 欧美一区二区黄| 可以免费看不卡的av网站| 欧美高清免费| 国产精品久久久久久亚洲调教| 国产日韩精品视频一区| 好吊一区二区三区| 日韩视频三区| 欧美在线视频全部完| 麻豆精品视频在线观看视频| 亚洲国产欧美在线人成| 9久草视频在线视频精品| 午夜在线播放视频欧美| 老巨人导航500精品| 欧美日韩一区二区精品| 国产亚洲欧美激情| 亚洲精品视频在线观看网站| 亚洲欧美日韩一区| 欧美阿v一级看视频| 99在线精品观看| 久久久久久久久久久成人| 免费在线成人av| 国产精品亚发布| 亚洲理伦在线| 久久精品99国产精品日本| 亚洲春色另类小说| 亚洲欧美激情一区二区| 六月婷婷一区| 国产欧美一区二区精品性| 亚洲精品视频免费| 久久嫩草精品久久久久| 99这里只有久久精品视频| 久久女同精品一区二区| 国产精品麻豆va在线播放| 91久久综合亚洲鲁鲁五月天| 久久精品夜色噜噜亚洲a∨| 亚洲精品日韩综合观看成人91 | 亚洲激情精品| 久久精品人人做人人爽|