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

隨筆 - 5, 文章 - 0, 評論 - 13, 引用 - 0
數據加載中……

vc2008 fstream不支持中文路徑的解決方案

     項目編譯后給朋友試運行,發現運行出錯,提示路徑不正確找不到配置文件。因為朋友是放在桌面運行的,于是推測是中文路徑的問題(因為路徑中包含"桌面"兩個漢字)。反應很詫異,什么年代了,還有中文路徑的問題...
     跟蹤了一下ifstream的open函數,發現ifstream在打開文件之前會通過_mbstowcs_l_helper函數把文件路徑從mutilbyte轉換到unicode。其中的關鍵轉換函數如下:
 if (_loc_update.GetLocaleT()->locinfo->lc_handle[LC_CTYPE] == _CLOCALEHANDLE)
        {
            
/* C locale: easy and fast */
            
while (count < n)
            {
                
*pwcs = (wchar_t) ((unsigned char)s[count]);
                
if (!s[count])
                    
return count;
                count
++;
                pwcs
++;
            }
            
return count;

        } 
    而vc的默認local信息就是_CLOCALEHANDLE,于是中文字符很悲劇的被轉換成了莫名其妙的一串東西。google了下,似乎很多人碰到了這個問題,也沒有特別好的解決方案,要不直接unicode,要不每次調用fstream前后都調用一遍setlocal,對代碼的侵入性都很強。
    我做了個封裝的解決方案,使用個模板類對fstream做一個wrapper,代碼如下:
template<class T>
struct fstream_fix
    :
public T
{
    fstream_fix(){};

    template
<class T1>
    fstream_fix(T1 v1){
        setlocale(LC_CTYPE, 
".936");
        T::open(v1);
        setlocale(LC_CTYPE, 
0);
    }

    template
<class T1,class T2>
    fstream_fix(T1 v1,T2 v2){
        setlocale(LC_CTYPE, 
".936");
        T::open(v1,v2);
        setlocale(LC_CTYPE, 
0);
    }


    template
<class T1>
    
void open(T1 v1){
        setlocale(LC_CTYPE, 
".936");
        T::open(v1);
        setlocale(LC_CTYPE, 
0);
    }

    template
<class T1,class T2>
    
void open(T1 v1,T2 v2){
        setlocale(LC_CTYPE, 
".936");
        T::open(v1,v2);
        setlocale(LC_CTYPE, 
0);
    }
};

#define ifstream fstream_fix<ifstream>
#define ofstream fstream_fix<ofstream>
    OK.完美,對原項目沒有任何影響,ifstream fi(filepath);filepath中含有中文也能正常工作了。:) 當然要注意的是,在宏定義之后,就不能再include <fstream>,不然可能會有編譯錯誤。



posted on 2010-03-10 19:19 clane 閱讀(3887) 評論(5)  編輯 收藏 引用 所屬分類: C++

評論

# re: vc2008 fstream不支持中文路徑的解決方案  回復  更多評論   

wifstream ??
2010-03-10 22:34 | WXX

# re: vc2008 fstream不支持中文路徑的解決方案  回復  更多評論   

setlocal一次就可以了,不少函數都依賴這個。
2010-03-11 15:29 | 壞人

# re: vc2008 fstream不支持中文路徑的解決方案  回復  更多評論   

@WXX
這樣的話,要修改項目里所有的傳入path為unicode...
2010-03-11 15:57 | clane

# re: vc2008 fstream不支持中文路徑的解決方案[未登錄]  回復  更多評論   

頂樓主
2010-03-11 16:15 | Bill Hsu

# re: vc2008 fstream不支持中文路徑的解決方案  回復  更多評論   

setlocale(LC_CTYPE, ".936");應該改為:

setlocale(LC_ALL,"");

這樣更好
2010-03-13 11:51 | Bill Hsu
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 亚洲第一综合天堂另类专| 亚洲自拍高清| 亚洲综合丁香| 羞羞答答国产精品www一本| 欧美一区二区三区免费大片| 欧美在线短视频| 老司机成人网| 欧美日韩亚洲国产一区| 国产农村妇女精品| **性色生活片久久毛片| 小嫩嫩精品导航| 欧美一区亚洲一区| 欧美成在线观看| 国产精品久久久久久久久果冻传媒 | **网站欧美大片在线观看| 在线欧美日韩| 一区二区三区鲁丝不卡| 亚洲欧美韩国| 久久综合一区二区三区| 欧美肥婆bbw| 亚洲一区二区三区涩| 久久精品一区蜜桃臀影院 | 国产一区二区三区免费观看| 国内精品嫩模av私拍在线观看| 亚洲黄色三级| 欧美亚洲自偷自偷| 亚洲第一中文字幕| 亚洲一区二区在线免费观看| 久久另类ts人妖一区二区| 欧美日韩国产大片| 在线高清一区| 亚洲一区二区网站| 欧美激情在线观看| 欧美专区第一页| 欧美午夜不卡| 亚洲精品在线观看免费| 久久精品亚洲精品国产欧美kt∨| 亚洲丰满少妇videoshd| 久久国产欧美精品| 欧美日韩一区在线视频| 亚洲欧洲视频| 蜜臀久久99精品久久久久久9 | 欧美福利小视频| 欧美一区二区在线播放| 欧美日本精品| 亚洲精品视频免费在线观看| 久久久免费精品| 一区二区日韩免费看| 欧美久久久久| 99这里只有精品| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产一区二区中文字幕免费看| 亚洲在线观看视频网站| 亚洲黄色影片| 欧美高潮视频| 亚洲三级影片| 亚洲乱码日产精品bd| 欧美.www| 一区二区三区视频在线| 亚洲激情在线视频| 久久精品国产在热久久| 欧美一区二区三区另类| 国产精品自拍小视频| 亚洲一区二区三区高清 | 激情久久久久久| 欧美在线日韩精品| 性色av一区二区三区红粉影视| 国产精品视频1区| 久久成人免费日本黄色| 欧美一区国产在线| 精品福利免费观看| 欧美激情导航| 欧美日韩激情小视频| 亚洲制服少妇| 欧美一区国产一区| 亚洲国产精品黑人久久久| 亚洲国产一区二区三区a毛片| 欧美日本高清一区| 亚洲天堂av在线免费观看| 国产精品久久久久久久久免费樱桃 | 久久久亚洲国产天美传媒修理工| 欧美中文字幕精品| 亚洲国产精品va| 亚洲精品视频啊美女在线直播| 欧美日韩成人一区| 亚洲欧美资源在线| 美女黄网久久| 亚洲男女自偷自拍| 久久婷婷av| 亚洲午夜一区二区| 久久精品日韩欧美| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲免费播放| 在线观看精品| 亚洲香蕉网站| 亚洲欧洲美洲综合色网| 亚洲无限av看| 亚洲人成网站色ww在线 | 欧美成人福利视频| 午夜久久久久久| 久久久久久久999精品视频| 一区二区动漫| 久久欧美肥婆一二区| 亚洲视频自拍偷拍| 久久色中文字幕| 亚洲一区高清| 欧美成人精品一区| 久久视频在线视频| 国产精品国产三级国产普通话三级 | 宅男噜噜噜66一区二区66| 亚洲欧美日韩区| 亚洲美女中文字幕| 久久精品1区| 亚洲一区不卡| 免费视频一区| 久久久久看片| 国产精品乱码一区二区三区| 欧美激情片在线观看| 国内外成人在线视频| 亚洲永久视频| 亚洲一区综合| 欧美日韩精品一区视频| 欧美a一区二区| 狠狠色狠色综合曰曰| 午夜精品免费在线| 午夜亚洲性色福利视频| 欧美日韩精品一区二区在线播放| 蜜臀99久久精品久久久久久软件| 国产精品综合av一区二区国产馆| 99视频精品| 一区二区三区国产在线| 欧美国内亚洲| 亚洲国产三级| 亚洲人成网站777色婷婷| 久久嫩草精品久久久精品| 久久久九九九九| 国产亚洲人成a一在线v站| 亚洲网站在线看| 欧美亚洲免费| 国产亚洲一区二区三区| 午夜国产精品视频| 欧美在线在线| 在线免费不卡视频| 欧美国产国产综合| 亚洲人成亚洲人成在线观看图片| 亚洲黄网站在线观看| 欧美精品成人一区二区在线观看 | 欧美成人免费一级人片100| 欧美福利在线| 妖精成人www高清在线观看| 欧美日韩精品免费观看视频| 99国产麻豆精品| 亚洲宅男天堂在线观看无病毒| 国产精品久久波多野结衣| 亚洲天堂成人在线观看| 欧美一区二区私人影院日本 | 亚洲精品乱码| 小嫩嫩精品导航| 激情欧美一区| 欧美电影电视剧在线观看| 一区二区三区www| 欧美一区二区三区久久精品| 国产一区二区精品久久| 另类春色校园亚洲| 亚洲美女网站| 久久久免费精品视频| 亚洲理论电影网| 国产精品一区在线观看你懂的| 久久久.com| 日韩午夜电影av| 久久久欧美精品sm网站| 99视频一区| 悠悠资源网久久精品| 欧美日韩国产页| 亚洲国产三级| 国产精品综合久久久| 免费中文日韩| 午夜精品久久久久久久男人的天堂 | 久久亚洲图片| 99这里只有久久精品视频| 久久久久久有精品国产| 一区二区av| 国产有码在线一区二区视频| 欧美日韩成人在线视频| 欧美伊人久久大香线蕉综合69| 亚洲激情在线激情| 美女精品一区| 香蕉av777xxx色综合一区| 最新国产の精品合集bt伙计| 国产模特精品视频久久久久| 欧美成人午夜激情视频| 久久gogo国模啪啪人体图| 一区二区三区久久| 亚洲国产精品综合| 欧美1区2区| 久久久精品国产免大香伊| 午夜亚洲性色视频| 亚洲欧美精品伊人久久| 一区二区三区四区蜜桃|