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

隨筆 - 5, 文章 - 0, 評(píng)論 - 13, 引用 - 0
數(shù)據(jù)加載中……

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

     項(xiàng)目編譯后給朋友試運(yùn)行,發(fā)現(xiàn)運(yùn)行出錯(cuò),提示路徑不正確找不到配置文件。因?yàn)榕笥咽欠旁谧烂孢\(yùn)行的,于是推測(cè)是中文路徑的問(wèn)題(因?yàn)槁窂街邪?桌面"兩個(gè)漢字)。反應(yīng)很詫異,什么年代了,還有中文路徑的問(wèn)題...
     跟蹤了一下ifstream的open函數(shù),發(fā)現(xiàn)ifstream在打開(kāi)文件之前會(huì)通過(guò)_mbstowcs_l_helper函數(shù)把文件路徑從mutilbyte轉(zhuǎn)換到unicode。其中的關(guān)鍵轉(zhuǎn)換函數(shù)如下:
 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的默認(rèn)local信息就是_CLOCALEHANDLE,于是中文字符很悲劇的被轉(zhuǎn)換成了莫名其妙的一串東西。google了下,似乎很多人碰到了這個(gè)問(wèn)題,也沒(méi)有特別好的解決方案,要不直接unicode,要不每次調(diào)用fstream前后都調(diào)用一遍setlocal,對(duì)代碼的侵入性都很強(qiáng)。
    我做了個(gè)封裝的解決方案,使用個(gè)模板類對(duì)fstream做一個(gè)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.完美,對(duì)原項(xiàng)目沒(méi)有任何影響,ifstream fi(filepath);filepath中含有中文也能正常工作了。:) 當(dāng)然要注意的是,在宏定義之后,就不能再include <fstream>,不然可能會(huì)有編譯錯(cuò)誤。



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

評(píng)論

# re: vc2008 fstream不支持中文路徑的解決方案  回復(fù)  更多評(píng)論   

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

# re: vc2008 fstream不支持中文路徑的解決方案  回復(fù)  更多評(píng)論   

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

# re: vc2008 fstream不支持中文路徑的解決方案  回復(fù)  更多評(píng)論   

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

# re: vc2008 fstream不支持中文路徑的解決方案[未登錄](méi)  回復(fù)  更多評(píng)論   

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

# re: vc2008 fstream不支持中文路徑的解決方案  回復(fù)  更多評(píng)論   

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

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>
            欧美大尺度在线| 亚洲影院高清在线| 欧美18av| 一区二区三区免费在线观看| 91久久久久久久久| 欧美韩日亚洲| 亚洲午夜性刺激影院| 亚洲午夜国产成人av电影男同| 国产精品久久久久国产精品日日| 亚洲欧美中文日韩v在线观看| 亚洲男人的天堂在线观看| 狠狠久久亚洲欧美专区| 欧美www视频在线观看| 久久中文字幕导航| 久久久久国产精品www| 亚洲精品美女免费| 亚洲一二区在线| 在线观看国产欧美| 洋洋av久久久久久久一区| 国产麻豆精品久久一二三| 蜜臀久久99精品久久久久久9| 欧美jizzhd精品欧美巨大免费| 在线亚洲成人| 久久精品夜色噜噜亚洲a∨| 在线综合视频| 久久久久久久尹人综合网亚洲| 亚洲电影网站| 亚洲一区免费| 亚洲人成7777| 午夜精品久久久久久久99樱桃| 亚洲电影在线| 亚洲一区在线观看免费观看电影高清| 在线看成人片| 亚洲主播在线| 99精品视频网| 快射av在线播放一区| 午夜亚洲影视| 欧美久久久久免费| 久久尤物视频| 国产欧美日韩一区二区三区在线观看| 欧美成人免费网| 国产一区二区三区自拍| 一本大道av伊人久久综合| 亚洲激情精品| 久久精品盗摄| 久久久91精品国产一区二区精品| 欧美成人情趣视频| 免费91麻豆精品国产自产在线观看| 国产精品久久久久aaaa九色| 亚洲欧洲一区二区在线播放| 精品91在线| 欧美中文在线免费| 欧美伊人久久大香线蕉综合69| 欧美国产日本在线| 亚洲第一福利社区| 亚洲国产精品va| 久久久99爱| 快射av在线播放一区| 国产日韩精品视频一区| 亚洲制服av| 性做久久久久久久久| 国产精品视频不卡| 亚洲小说欧美另类社区| 亚洲欧美在线网| 欧美性生交xxxxx久久久| 一本色道久久88综合日韩精品| 日韩网站在线观看| 欧美日韩精品在线播放| 亚洲人成在线观看一区二区| 亚洲日本无吗高清不卡| 欧美激情亚洲精品| 亚洲国产日韩一区二区| 亚洲卡通欧美制服中文| 亚洲国产小视频在线观看| 亚洲欧洲三级电影| 欧美激情精品久久久六区热门| 欧美黄色免费| 一区二区三区四区国产| 国产精品久久久久久久久免费| 亚洲综合日韩在线| 久久一二三区| 亚洲精品网址在线观看| 欧美日韩综合精品| 西瓜成人精品人成网站| 久久亚洲精品视频| 99精品国产一区二区青青牛奶| 欧美日韩不卡| 西瓜成人精品人成网站| 免费久久精品视频| 亚洲五月婷婷| 国产视频亚洲精品| 牛牛影视久久网| 亚洲图片激情小说| 欧美大片91| 亚洲欧美日本日韩| 亚洲第一中文字幕在线观看| 欧美日韩精品一区| 欧美一级理论片| 性欧美xxxx大乳国产app| 精品91在线| 欧美三级资源在线| 久久久五月天| 一本久久青青| 欧美成人精品一区二区| 亚洲欧美激情诱惑| 亚洲第一精品久久忘忧草社区| 欧美人与禽猛交乱配| 久久精品国产亚洲一区二区三区 | 亚洲一区二区三区精品在线观看| 国产伦精品一区二区三区照片91 | 亚洲激情中文1区| 国产精品美女久久久浪潮软件 | 亚洲欧美视频在线| 欧美国产第一页| 欧美一级二区| 亚洲国产三级| 国产在线视频欧美一区二区三区| 欧美韩国日本一区| 久久亚洲影院| 亚洲综合色视频| 一本色道久久| 亚洲激情视频网| 欧美成人精品一区二区| 久久疯狂做爰流白浆xx| 亚洲性视频网址| 亚洲欧洲另类| 亚洲高清久久网| 在线日韩av| 国内成人精品2018免费看 | 欧美一区2区视频在线观看| 99成人在线| 亚洲精品日韩一| 亚洲黄色免费网站| 欧美gay视频激情| 另类综合日韩欧美亚洲| 久久精品视频播放| 欧美在线地址| 欧美综合激情网| 欧美一区二区黄色| 久久成人精品一区二区三区| 亚洲欧美视频在线观看| 亚洲影院一区| 欧美一级精品大片| 久久av一区二区三区| 午夜一区不卡| 久久久国产91| 久久久久久伊人| 久久综合色影院| 能在线观看的日韩av| 欧美电影免费观看网站| 亚洲高清一区二区三区| 亚洲人www| 一本久道久久综合婷婷鲸鱼| 日韩写真视频在线观看| 一本久道久久综合中文字幕| 亚洲少妇一区| 午夜精品久久久久久99热| 久久国产手机看片| 噜噜噜91成人网| 欧美精品网站| 国产精品视频导航| 黄色成人片子| 亚洲久久一区| 午夜精品剧场| 久久野战av| 欧美顶级少妇做爰| 一本一本a久久| 欧美在线短视频| 美女黄毛**国产精品啪啪| 欧美精品一区二区在线观看| 国产精品第十页| 好看的亚洲午夜视频在线| 亚洲激情女人| 欧美一区亚洲| 欧美激情片在线观看| 中文精品一区二区三区| 欧美中文字幕在线播放| 欧美高清不卡| 国产视频观看一区| 亚洲精品一区二区在线观看| 亚洲午夜激情在线| 美女999久久久精品视频| av成人手机在线| 久久人人九九| 国产精品亚洲一区| 亚洲人成久久| 久久九九精品| 亚洲免费av观看| 久久夜色撩人精品| 国产精品一二一区| 日韩亚洲精品在线| 久久综合久久久| 中文在线不卡视频| 欧美成人综合网站| 精品成人免费| 久久成人免费视频| aa国产精品| 欧美成人三级在线| 在线日韩中文| 久久久夜色精品亚洲|