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

doing5552

記錄每日點滴,不枉人生一世

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  73 Posts :: 0 Stories :: 94 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(24)

我參與的團隊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 456264
  • 排名 - 49

最新隨筆

最新評論

閱讀排行榜

評論排行榜

使用C++標準庫的iostream,可以方便地將控制臺、文件、字符串以及其它可擴充的外部表示作為流來處理,但要處理中文,卻會碰到很多問題。本人原來沒怎么用過這個iostream,這幾天嘗試用這個寫點東西,一會兒不能輸出中文,一會兒不支持中文文件名的,搞得頭大。網(wǎng)上搜了搜,沒有發(fā)現(xiàn)適用于所有情況的解決方案。不過后來自己經(jīng)過多次測試,基本解決了這些問題,現(xiàn)在寫成文字作為一個總結,也供碰到同樣問題的朋友參考。關于C語言中的 printf和wprintf的中文輸出,本文也進行了探討。

  需要說明的是,我的開發(fā)環(huán)境是VS 2005(標準庫當然也是微軟實現(xiàn)的),不保證其它環(huán)境下是相同的效果。

  1、cout和wcout

  在缺省的C locale下,cout可以直接輸出中文,但對于wcout卻不行(至少VS 2005下不行)。對于wcout,需要將其locale設為本地語言才能輸出中文:

  wcout.imbue(locale(locale(),"",LC_CTYPE));  // ①

  也有人用如下語句的,但這會改變wcout的所有l(wèi)ocale設置,比如數(shù)字“1234”會輸出為“1,234”。

  wcout.imbue(locale(""));

  2、ofstream和wofstream

  在缺省的C locale下,ofstream能正確輸出中文到文件中,但不支持中文文件名;wofstream支持中文文件名,但不能向文件中輸出中文。要解決這個問題,需要在打開文件之前將全局locale設為本地語言。將全局locale設為本地語言后,ofstream和wofstream的問題都解決了,但 cout和wcout卻不能輸出中文了。要讓cout和wcout輸出中文,需要將全局locale恢復原來的設置,如下所示:

  locale &loc=locale::global(locale(locale(),"",LC_CTYPE));  // ②

  ofstream ofs("ofs測試.txt");

  wofstream wofs(L"wofs測試.txt");

  locale::global(loc);  // ③

  ofs<<"test測試"<<1234<<endl;

  wofs<<L"Another test還是測試"<<1234<<endl;

  3、printf和wprintf

  加上這兩位C語言中的老兄,問題更加復雜。考慮如下語句(注意s的大小寫):

  printf("%s", "multibyte中文\n");  // ④

  printf("%S", L"unicode中文\n");  // ⑤

  wprintf(L"%S", "multibyte中文\n");  // ⑥

  wprintf(L"%s", L"unicode中文\n");  // ⑦

  缺省情況下,⑤、⑦兩條語句不能輸出中文,這兩條語句中字符串的形式是unicode形式的。如果在所有輸出語句之前加上如下語句將C語言的全局locale設置為本地語言(C語言中只有全局locale)就可以正常輸出了:

  setlocale(LC_CTYPE, "");  // ⑧

  但這會導致cout和wcout不能輸出中文(汗,的確麻煩),將C語言的全局locale恢復后cout和wcout就正常了,如下所示:

  setlocale(LC_CTYPE, "C");  // ⑨

  但恢復后,printf和wprintf輸出Unicode文本又不正常了(輸出MultiByte文本總是正常的)。總不能每寫一個 printf/wprintf就設置一次然后再恢復一次吧?所以,建議不要混用iostream和printf/wprintf,實在要混用,那就讓 printf/wprintf只輸出MultiByte字符串,這樣不需要調用setlocale(),也就不會影響到cout和wcout.

  總結

  總之,用iostream、printf/wprintf輸出中文,有點麻煩。概括起來要點如下:

  ·如果要用wcout,需要在使用之前按語句①將其locale設置為本地語言;

  ·如果要用ofstream或wofstream,要在打開文件之前按語句②將全局locale設為本地語言并保存初始的全局locale.然后在打開文件之后,按語句③將全局locale恢復為初始值;

  ·不要混用iostream和printf/wprintf.如果要混用,只用printf/wprintf輸出MultiByte字符串;

  ·單獨使用printf/wprintf時,如果要輸出Unicode字符串,需要按語句⑧設置C語言的全局locale.如果只輸出MultiByte字符串,則不需設置。

posted on 2010-07-25 21:17 doing5552 閱讀(516) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            精品动漫3d一区二区三区| 国产一区二区三区日韩| 亚洲美女网站| 亚洲三级免费观看| 欧美日韩精品在线观看| 亚洲视频在线观看| 亚洲一区成人| 伊人春色精品| 亚洲国产免费看| 欧美午夜一区二区三区免费大片| 亚洲一区二区四区| 欧美一级理论片| 亚洲高清久久网| 夜夜爽www精品| 国产欧美日韩综合一区在线播放| 久久久蜜桃一区二区人| 欧美大秀在线观看| 午夜精品久久一牛影视| 久久久久久久综合狠狠综合| 99精品久久| 欧美一区二区三区免费看| 亚洲韩日在线| 亚洲一区二区三区精品在线 | 亚洲欧美日韩精品| 狠狠色综合日日| 日韩午夜电影在线观看| 国产精品永久免费在线| 欧美成人免费小视频| 国产精品豆花视频| 欧美aⅴ一区二区三区视频| 欧美午夜电影完整版| 久久久欧美一区二区| 欧美美女操人视频| 蜜桃久久av一区| 国产欧美日韩高清| 亚洲靠逼com| 在线电影欧美日韩一区二区私密| 99国产精品久久| 18成人免费观看视频| 亚洲无线视频| 夜夜精品视频| 蜜桃av一区二区三区| 久久激情五月丁香伊人| 欧美日韩亚洲视频| 亚洲福利国产精品| 黄色亚洲网站| 性色av一区二区三区| 亚洲一区日本| 欧美日韩午夜在线| 亚洲激情网址| 亚洲激情自拍| 免费观看30秒视频久久| 久久蜜桃资源一区二区老牛| 国产精品激情av在线播放| 亚洲精品美女在线观看播放| 在线看国产日韩| 久久精品一区四区| 久久精品一区蜜桃臀影院| 国产精品久久久久一区二区三区| 亚洲福利在线观看| 亚洲国产乱码最新视频| 久久香蕉国产线看观看av| 久久精品日产第一区二区| 国产精品免费一区二区三区观看| 一区二区欧美日韩| 亚洲免费视频网站| 国产精品乱子乱xxxx| 亚洲线精品一区二区三区八戒| 亚洲视频在线观看一区| 欧美日韩在线观看一区二区三区| 亚洲日本电影在线| 亚洲一区二区在线视频| 国产精品国产| 亚洲欧美国产日韩中文字幕| 久久www成人_看片免费不卡| 国产婷婷色一区二区三区在线| 欧美一区二区三区视频在线观看| 久久超碰97人人做人人爱| 国产视频一区免费看| 久久三级福利| 亚洲国产美国国产综合一区二区| 日韩一区二区精品在线观看| 欧美精品日韩www.p站| 91久久久一线二线三线品牌| 99re热这里只有精品视频 | 欧美一区二区三区久久精品| 久久久亚洲成人| 亚洲精品一区二区三区婷婷月| 欧美猛交免费看| 亚洲免费网址| 免费欧美在线| 亚洲一级黄色| 激情综合自拍| 欧美日韩视频在线观看一区二区三区| 亚洲视频网站在线观看| 老鸭窝91久久精品色噜噜导演| 亚洲黄色在线| 国产精品一区二区久久精品| 久久蜜桃精品| 一区二区三区视频在线| 久久久999成人| 一本久久a久久精品亚洲| 国产欧美在线观看| 欧美另类变人与禽xxxxx| 亚洲伊人久久综合| 亚洲人成在线观看一区二区 | 精品成人在线| 欧美日韩亚洲一区三区| 欧美一区免费视频| 日韩亚洲一区在线播放| 久久久综合网| 亚洲一区在线免费观看| 亚洲国产日韩一级| 国产在线精品二区| 欧美午夜精品久久久久久人妖| 久久久久女教师免费一区| 一区二区三区精品在线| 欧美黄网免费在线观看| 欧美与黑人午夜性猛交久久久| 亚洲精品欧美日韩| 一区二区三区在线观看视频| 国产精品久在线观看| 欧美了一区在线观看| 久久亚洲视频| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区日韩欧美| 亚洲日本免费| 亚洲成人在线免费| 久久亚洲综合色| 亚洲一区二区免费视频| 亚洲国产aⅴ天堂久久| 国一区二区在线观看| 国产精品视频xxx| 国产精品超碰97尤物18| 欧美精选午夜久久久乱码6080| 久久久久久亚洲精品不卡4k岛国| 亚洲一区二区三区免费观看| 99国产精品久久| 99re视频这里只有精品| 最近中文字幕日韩精品| 亚洲国产网站| 亚洲日本成人网| 亚洲人成网站777色婷婷| 亚洲国产福利在线| 欧美激情按摩在线| 亚洲黄色一区二区三区| 亚洲高清在线观看| 亚洲激情二区| 日韩视频免费在线观看| 日韩视频中文| 一区二区三区四区国产| 中国av一区| 亚洲欧美日韩综合| 欧美在线短视频| 久久婷婷色综合| 欧美高清视频一区二区三区在线观看| 蜜桃av噜噜一区二区三区| 欧美国产高潮xxxx1819| 欧美日韩小视频| 国产精品自拍小视频| 黑人极品videos精品欧美裸| 雨宫琴音一区二区在线| 亚洲精品一区二区网址| 一本一本久久a久久精品综合麻豆| 99国产精品久久久| 香蕉免费一区二区三区在线观看| 久久激情视频免费观看| 美乳少妇欧美精品| 亚洲精品一区久久久久久| 一区二区欧美在线| 欧美在线观看网址综合| 久久手机免费观看| 欧美人成免费网站| 国产精品视频一区二区三区| 国产美女精品一区二区三区| 激情文学综合丁香| 一区二区成人精品| 久久国产主播精品| 亚洲国产精品久久91精品| 在线视频你懂得一区二区三区| 亚洲欧美国产视频| 欧美大尺度在线| 国产乱码精品一区二区三区忘忧草 | 欧美视频观看一区| 狠狠色丁香婷婷综合影院| 亚洲裸体视频| 久久五月天婷婷| 亚洲天堂网站在线观看视频| 久久婷婷丁香| 国产欧美日韩中文字幕在线| 亚洲人永久免费| 久久人人97超碰国产公开结果| 亚洲精品一线二线三线无人区| 久久国产一区| 国产欧美日韩一区二区三区在线| 亚洲日韩视频| 欧美福利影院| 久久久亚洲高清| 国产日韩精品一区二区| 亚洲视频第一页|