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

doing5552

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

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

公告

常用鏈接

留言簿(24)

我參與的團(tuán)隊

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 455849
  • 排名 - 49

最新隨筆

最新評論

閱讀排行榜

評論排行榜

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

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

  1、cout和wcout

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

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

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

  wcout.imbue(locale(""));

  2、ofstream和wofstream

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

  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語言中的老兄,問題更加復(fù)雜。考慮如下語句(注意s的大小寫):

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

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

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

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

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

  setlocale(LC_CTYPE, "");  // ⑧

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

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

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

  總結(jié)

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

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

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

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

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

posted on 2010-07-25 21:17 doing5552 閱讀(511) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            依依成人综合视频| 亚洲大胆美女视频| 国产亚洲精品aa| 欧美视频在线观看免费| 老色鬼久久亚洲一区二区| 亚洲自拍偷拍色片视频| 一区二区久久| 亚洲一区国产精品| 亚洲欧美日韩久久精品| 亚洲欧美日韩精品在线| 欧美一区二粉嫩精品国产一线天| 亚洲在线中文字幕| 欧美在线www| 老司机午夜精品视频| 欧美国产免费| 国产精品盗摄久久久| 国产性做久久久久久| 国产欧美日韩视频在线观看| 国产视频一区欧美| 狠狠干成人综合网| 亚洲精品欧美一区二区三区| 一区二区久久| 久久精品99国产精品酒店日本| 久久久久亚洲综合| 欧美成人高清| 一区二区三区高清| 欧美一区国产二区| 免费成人美女女| 欧美视频中文在线看| 国产欧美日韩三级| 亚洲精品视频啊美女在线直播| 欧美一区视频在线| 蜜臀91精品一区二区三区| 亚洲网站在线观看| 最新国产精品拍自在线播放| 国产精品日韩欧美一区| 欧美高清在线| 国精品一区二区| 欧美成人综合在线| 欧美日韩免费观看一区二区三区| 欧美午夜视频在线| 在线播放不卡| 一区二区三区www| 久久国产精品亚洲77777| 亚洲第一视频| 性欧美1819性猛交| 欧美日韩免费观看一区=区三区| 宅男噜噜噜66一区二区| 中国成人亚色综合网站| 亚洲欧美在线磁力| 欧美精品久久久久久久| 国产欧美一区二区三区视频| 亚洲精品一二三区| 老司机精品导航| 亚洲午夜高清视频| 巨乳诱惑日韩免费av| 久久噜噜噜精品国产亚洲综合| 99精品欧美一区二区蜜桃免费| 久久gogo国模裸体人体| 国产午夜精品全部视频在线播放| 宅男噜噜噜66国产日韩在线观看| 亚洲欧洲三级| 欧美日韩一区国产| 亚洲视频成人| 亚洲一区在线观看视频| 国产精品一区二区久久| 亚洲在线一区| 亚洲欧美视频在线| 精品999成人| 亚洲成人在线视频播放 | 亚洲欧美另类中文字幕| 欧美激情成人在线视频| 性久久久久久久| 欧美日韩精品中文字幕| 激情偷拍久久| 中文在线不卡视频| 鲁大师成人一区二区三区 | 国产精品毛片在线| 久久久高清一区二区三区| 亚洲无吗在线| 毛片基地黄久久久久久天堂| 亚洲精品日日夜夜| 国产乱人伦精品一区二区| 欧美喷水视频| 欧美日韩1区2区| 国产日韩欧美中文在线播放| 精品不卡一区| 亚洲伊人网站| 欧美成人蜜桃| 欧美伦理视频网站| 伊人春色精品| 欧美韩国日本一区| 欧美成人综合| 亚洲欧美日韩视频二区| 亚洲影音一区| 一区二区视频欧美| 免费在线观看精品| 欧美日韩不卡一区| 久久精品国产清自在天天线| 午夜视频精品| 亚洲韩国精品一区| 亚洲一区二区在线视频| 亚洲天堂av图片| 亚洲一区二区久久| 亚洲精品一区二区三区婷婷月| 正在播放日韩| 久久精品国产亚洲5555| 亚洲精品国产精品国自产观看| 久久久精品日韩欧美| 日韩亚洲国产欧美| 欧美一二区视频| 国产精品久久久久av免费| 一区二区亚洲精品国产| 欧美一级电影久久| 亚洲国产成人av在线| 一本色道久久综合一区| 国产精品国内视频| 亚洲乱码久久| 亚洲国产欧美一区二区三区久久 | 亚洲自拍高清| 亚洲三级影院| 男女激情视频一区| 亚洲国产精品久久久久秋霞不卡 | 久久久99免费视频| 国产人成一区二区三区影院| 亚洲小说欧美另类社区| 欧美成人中文字幕| 久久久女女女女999久久| 很黄很黄激情成人| 久久天天躁夜夜躁狠狠躁2022| 亚洲天堂成人| 国产精品一卡二| 久久不射中文字幕| 欧美与黑人午夜性猛交久久久| 国产亚洲欧美色| 亚洲人成网站色ww在线| 久久精品人人| 91久久亚洲| 亚洲美女啪啪| 国产精品欧美在线| 久久久不卡网国产精品一区| 欧美专区一区二区三区| 国内精品嫩模av私拍在线观看| 久久乐国产精品| 久久综合色天天久久综合图片| 欧美经典一区二区三区| 亚洲欧洲精品一区| 国产精品久久久久久久9999| 亚洲欧美影院| 久久久精品国产99久久精品芒果| 亚洲激情欧美| 亚洲视频免费在线| 亚洲国产高清一区| 99精品欧美| 久久大逼视频| 欧美精品v国产精品v日韩精品| 亚洲一区综合| 久久久国产精品亚洲一区 | 欧美激情一区二区久久久| 亚洲国产精品成人| 亚洲欧美一区二区三区极速播放| 国产乱码精品一区二区三区五月婷| 麻豆成人在线播放| 欧美视频一二三区| 欧美不卡视频| 国产精品美女诱惑| 欧美大秀在线观看| 国产婷婷色综合av蜜臀av| 欧美韩日一区二区三区| 亚洲女女做受ⅹxx高潮| 亚洲东热激情| 亚洲精品久久久久久久久久久| 免费看av成人| 国产精品一区二区三区四区| 亚洲第一福利视频| 久久久久久综合网天天| 国产精品国内视频| 亚洲精选成人| 妖精视频成人观看www| 国模叶桐国产精品一区| 亚洲日本激情| 狠狠干成人综合网| 一区二区三区四区蜜桃| 欧美国产在线观看| 久久xxxx精品视频| 香港成人在线视频| 国产精品草草| 亚洲国产一区二区三区a毛片| 国产无一区二区| 亚洲视频在线观看免费| 日韩视频免费观看| 国产精品久久999| 亚洲精品乱码久久久久久蜜桃麻豆| 黄色国产精品一区二区三区| 亚洲欧美日韩电影| 西瓜成人精品人成网站| 欧美日韩在线播放三区| 亚洲国产视频直播| 亚洲美女诱惑| 一区国产精品|