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

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

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

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



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

評論

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

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

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

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

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

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

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

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

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

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>
            国产欧美日韩综合精品二区| 亚洲欧美国产日韩天堂区| 久久精品日韩欧美| 国产一区二区三区成人欧美日韩在线观看 | 亚洲精品欧美专区| 欧美成人官网二区| 99精品视频免费观看视频| 快she精品国产999| 免费在线成人| 亚洲一区二区三区在线播放| 亚洲一级片在线看| 国内精品久久久久久久影视蜜臀| 玖玖玖国产精品| 欧美国产第一页| 亚洲女人av| 久久天堂国产精品| 在线视频你懂得一区| 亚洲欧美在线高清| ●精品国产综合乱码久久久久| 91久久线看在观草草青青| 欧美特黄a级高清免费大片a级| 久久国产精品第一页| 美女精品在线观看| 亚洲女同同性videoxma| 久久riav二区三区| 日韩午夜在线视频| 久久国产欧美精品| 亚洲一区二区三区中文字幕在线| 欧美中文字幕在线| 一本久道久久久| 久久国产精品第一页| a4yy欧美一区二区三区| 欧美影院精品一区| 一区二区三区|亚洲午夜| 欧美在线免费观看| 亚洲综合欧美日韩| 欧美不卡在线| 久久久精品免费视频| 久久国产手机看片| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美日韩成人综合天天影院| 欧美在线观看视频在线| 欧美激情网站在线观看| 久久久久久网站| 国产精品每日更新| 亚洲激情视频网| 在线免费观看日本欧美| 午夜精品在线| 亚洲已满18点击进入久久| 久久色中文字幕| 久久久久国产精品一区三寸| 欧美日韩在线一二三| 女女同性女同一区二区三区91| 国产欧美午夜| 亚洲欧美国产精品桃花| 一区二区三区四区国产| 欧美成人官网二区| 欧美大尺度在线| 一区精品在线| 久久久久久亚洲精品杨幂换脸| 午夜宅男欧美| 国产精品你懂的在线欣赏| 夜夜嗨av色一区二区不卡| 日韩午夜在线电影| 欧美绝品在线观看成人午夜影视| 亚洲福利免费| 亚洲免费观看高清完整版在线观看熊| 麻豆av一区二区三区久久| 蜜桃av一区二区三区| 1204国产成人精品视频| 裸体歌舞表演一区二区| 亚洲成在线观看| 亚洲国产天堂久久综合| 亚洲国产精品一区| 欧美成人精品在线观看| 欧美激情第4页| 亚洲乱码视频| 欧美日韩在线视频一区二区| 亚洲午夜一二三区视频| 久久国产精品久久久久久| 激情国产一区二区| 久久在线免费| 日韩一区二区福利| 欧美一区二区三区四区夜夜大片| 国产亚洲精品aa| 久久免费99精品久久久久久| 亚洲欧洲一区二区在线播放| 亚洲天堂av在线免费观看| 国产精品久久久一区麻豆最新章节| 亚洲在线视频观看| 欧美成人免费大片| 一个色综合导航| 国产揄拍国内精品对白| 免费日韩av电影| 宅男精品视频| 女女同性女同一区二区三区91| 日韩一级大片在线| 国产深夜精品| 欧美激情免费观看| 午夜精品久久久久久久久久久久| 欧美高清视频免费观看| 亚洲欧美欧美一区二区三区| 在线免费观看日韩欧美| 国产精品久久久久av免费| 久久国内精品视频| 亚洲美女av在线播放| 久久亚洲免费| 亚洲午夜免费视频| 欧美大片91| 麻豆免费精品视频| 亚洲一区二区在线观看视频| 在线观看成人av| 国产精品一卡二| 欧美日韩国产免费观看| 久久人人爽人人爽| 亚洲一区二区精品在线| 欧美福利视频一区| 欧美在线日韩| 亚洲嫩草精品久久| 亚洲国产精品视频| 很黄很黄激情成人| 国产欧美日韩综合一区在线播放 | 久久久亚洲精品一区二区三区 | 亚洲一区二区三区在线视频| 亚洲高清在线播放| 欧美成人久久| 美女精品视频一区| 久久亚洲二区| 久久九九精品99国产精品| 亚洲欧美日韩系列| 亚洲香蕉成视频在线观看| 亚洲人成在线观看一区二区| 一区在线观看视频| 韩曰欧美视频免费观看| 国产日韩视频一区二区三区| 国产精品va在线播放我和闺蜜| 欧美福利一区| 欧美激情按摩| 欧美精品v国产精品v日韩精品| 欧美**人妖| 欧美激情欧美激情在线五月| 免费成人在线观看视频| 免播放器亚洲| 欧美高清日韩| 欧美视频一二三区| 国产精品久久777777毛茸茸| 国产精品高清网站| 国产精品永久免费| 韩国精品在线观看| 伊人久久综合| 亚洲美女少妇无套啪啪呻吟| 一区二区三区国产精华| 亚洲午夜一级| 欧美永久精品| 免费观看成人鲁鲁鲁鲁鲁视频| 玖玖综合伊人| 亚洲欧洲在线播放| 亚洲一区二区3| 久久精品国产第一区二区三区| 久久精品一级爱片| 欧美激情麻豆| 欧美午夜影院| 黄色一区二区三区四区| 亚洲日本成人在线观看| 日韩午夜激情电影| 中文av字幕一区| 久久激情五月激情| 欧美激情一二区| 夜夜嗨av一区二区三区中文字幕 | 国产精品婷婷| 亚洲国产精品ⅴa在线观看 | 久久不见久久见免费视频1| 久久久久久亚洲精品不卡4k岛国| 老色鬼精品视频在线观看播放| 亚洲电影欧美电影有声小说| 亚洲性av在线| 亚洲成色777777女色窝| 在线亚洲观看| 欧美一区二区三区在线观看| 欧美成人自拍视频| 亚洲午夜精品网| 久久久久久伊人| 国产精品jvid在线观看蜜臀| 狠狠色狠狠色综合| 亚洲欧美日本国产专区一区| 麻豆久久久9性大片| 亚洲天堂男人| 六月天综合网| 国产一本一道久久香蕉| 亚洲另类黄色| 久久偷看各类wc女厕嘘嘘偷窃| 一本一本久久a久久精品综合妖精| 久久久精品欧美丰满| 国产精品久久久久久久浪潮网站| 亚洲高清在线精品| 欧美在线视频播放| 日韩一级免费| 欧美巨乳在线| 亚洲精品极品| 女同一区二区|