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

我住包子山

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 閱讀(9387) 評論(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>
            欧美专区在线观看| 亚洲在线免费观看| 夜夜嗨av一区二区三区网页| 国产精品免费网站| 欧美另类高清视频在线| 免费不卡在线观看| 久久天堂av综合合色| 免费观看亚洲视频大全| 欧美亚洲综合在线| 在线视频日韩| 亚洲免费在线播放| 亚洲欧美一区二区三区极速播放 | 亚洲综合国产| 欧美有码在线观看视频| 国产精品爽黄69| 亚洲破处大片| 亚洲乱码精品一二三四区日韩在线| 中文在线资源观看视频网站免费不卡| 免费91麻豆精品国产自产在线观看| 亚洲精品一区二| 激情欧美日韩一区| 精品成人免费| 亚洲精品一区在线观看香蕉| 又紧又大又爽精品一区二区| 国产午夜精品久久久久久免费视| 国产精品v欧美精品∨日韩| 国产精品成人在线| 激情欧美一区二区三区| 亚洲精选成人| 欧美在线国产精品| 欧美国产一区二区| 亚洲女女女同性video| 久久国产精品99精品国产| 亚洲精品免费一二三区| 亚洲电影免费观看高清完整版在线| 一区二区激情| 亚洲国产小视频在线观看| 亚洲一级黄色| 亚洲一区免费网站| 国产精品手机在线| 久久精品一区中文字幕| 午夜国产精品视频免费体验区| 欧美日韩亚洲系列| 欧美在线观看视频一区二区| 亚洲伊人观看| 好看的日韩视频| 蜜桃av噜噜一区| 欧美日本精品| 亚洲天堂av在线免费观看| 亚洲一区久久久| 亚洲精品视频在线播放| 欧美激情一区二区久久久| 亚洲高清在线观看一区| 亚洲综合色噜噜狠狠| 欧美成人国产一区二区| 欧美亚洲午夜视频在线观看| 欧美日韩国产综合视频在线观看中文| 国产主播一区二区三区| 亚洲一区二区视频在线| 亚洲国产精品久久久久婷婷884| 羞羞色国产精品| 国产精品福利在线观看| 一本到高清视频免费精品| 欧美国产日韩在线| 美女久久网站| 亚洲激情视频| 亚洲国产高清在线观看视频| 可以免费看不卡的av网站| 国内精品国产成人| 久久国产日韩欧美| 午夜精品影院在线观看| 国产一区二区剧情av在线| 久久精品99无色码中文字幕| 亚洲自拍偷拍一区| 国产精品专区h在线观看| 香蕉久久精品日日躁夜夜躁| 亚洲一区中文| 黄色成人在线| 亚洲电影免费观看高清完整版在线| 欧美成年人网站| 亚洲精品中文字幕在线观看| 亚洲免费观看在线观看| 国产精品网站在线观看| 久久精品视频在线观看| 久久先锋影音| 夜夜嗨av色综合久久久综合网| 99视频精品全部免费在线| 国产精品久久久久久久久久ktv| 性xx色xx综合久久久xx| 久久国产66| 亚洲精品国产精品乱码不99| 亚洲精品自在久久| 国产精品视频网| 免费黄网站欧美| 欧美日韩国产成人在线免费| 亚洲欧美在线观看| 久久激情婷婷| 99精品国产99久久久久久福利| 一本色道久久综合亚洲精品按摩| 国产精品综合| 欧美大秀在线观看| 国产精品激情| 欧美va天堂va视频va在线| 欧美日韩在线观看一区二区| 久久久久久久一区| 欧美激情在线观看| 久久国产精品一区二区三区四区| 久久亚洲综合| 亚洲欧美日韩高清| 美女精品国产| 欧美日韩亚洲一区二区| 久久亚洲国产精品一区二区| 欧美日韩国产欧美日美国产精品| 久久久久高清| 国产精品va在线| 欧美国产日韩xxxxx| 国产精品日韩精品欧美精品| 欧美激情精品久久久| 国产麻豆精品视频| 亚洲日本aⅴ片在线观看香蕉| 国产日韩三区| 正在播放欧美一区| 亚洲精品视频一区二区三区| 久久精品国产一区二区电影| 亚洲午夜视频在线观看| 久久在线观看视频| 久久久久国产精品麻豆ai换脸| 亚洲专区一区| 亚洲色诱最新| 欧美日韩三区| 最新成人在线| 亚洲欧洲一区二区在线播放| 久久久99精品免费观看不卡| 欧美在线视频免费| 国产精品一二| 亚洲欧美日韩国产综合| 亚洲专区免费| 欧美性做爰毛片| 亚洲视频福利| 欧美一区二区日韩| 国产女主播一区二区三区| 亚洲一区中文字幕在线观看| 欧美中文字幕在线| 国产一区再线| 久久色在线播放| 亚洲二区视频| 99国产精品久久久久久久久久| 欧美片在线播放| 欧美日韩亚洲一区三区| 欧美+亚洲+精品+三区| 亚洲第一精品在线| 日韩午夜av在线| 欧美午夜片在线观看| 国产精品99久久久久久久久久久久| 亚洲影院色无极综合| 国产精品亚洲成人| 午夜免费日韩视频| 久久精品五月婷婷| 亚洲第一网站| 嫩草影视亚洲| 蜜月aⅴ免费一区二区三区| 亚洲精品中文字幕有码专区| 老司机精品福利视频| 欧美激情1区| 亚洲一区二区三区中文字幕在线| 欧美深夜影院| 亚洲一区二区三区中文字幕| 国内欧美视频一区二区| 欧美成人69av| 亚洲免费久久| 亚洲欧美日韩国产另类专区| 蜜桃久久精品一区二区| 99视频在线观看一区三区| 亚洲午夜精品视频| 国产精品国产一区二区| 欧美激情中文字幕乱码免费| 亚洲国产精品精华液2区45| 美女日韩欧美| 亚洲制服丝袜在线| 国内外成人免费激情在线视频网站| 裸体素人女欧美日韩| 夜夜爽www精品| 欧美在线一二三区| 99av国产精品欲麻豆| 国产精品不卡在线| 麻豆精品视频在线观看| 久久久久久网站| 国产精品99久久久久久久女警 | 亚洲毛片在线观看| 亚洲成色777777女色窝| 欧美午夜在线视频| 麻豆成人综合网| 一区二区三区黄色| 亚洲大片在线观看| 亚洲七七久久综合桃花剧情介绍| 国产亚洲欧美日韩日本| 国产精品多人| 欧美14一18处毛片| 久久久久国内| 亚洲精品国产视频|