2.5.4 使用CRT库的宽字符版本
标准C++(www.cppentry.com)引入了宽字符wchar_t,用来表达像中文这样的宽文本,对应地,与字符(char)相关的CRT库函数基本上都有其宽字符(wchar_t)版本。
- FILE *_wfopen(
- const wchar_t* filename,
- const wchar_t* mode
- );
-
- int fwprintf(
- FILE* stream,
- const wchar_t* format [, argument ]...
- );
-
- int fwscanf(
- FILE* stream,
- const wchar_t* format [, argument ]...
- );
现在动手
接下来,我们体验如何采用CRT库函数的宽字符版本来操作文件,并输出茴字。
【程序 2-14】使用CRT的宽字符版本输出茴字
- 01 #include "stdafx.h"
- 02 #include <cstdio>
- 03 #include <clocale>
- 04
- 05 int main()
- 06 {
- 07 setlocale(LC_ALL, "chs");
- 08
- 09
- 10 FILE * fp = _wfopen(L"test.out", L"w,ccs=UNICODE");
- 11 fwprintf(fp, L"%s", L"茴香豆的茴");
- 12 fclose(fp);
- 13
- 14
- 15 fp = _wfopen(L"test.out", L"r,ccs=UNICODE");
- 16 wchar_t line[256];
- 17 fwscanf(fp, L"%s", line);
- 18 wprintf(L"%s\r\n", line);
- 19 fclose(fp);
- 20 return 0;21 }
光盘导读
该项目对应于光盘中的目录"\ch02\ CrtWcharWriter"。
提示
注意以上代码中setlocale()的用法,它将当前的时区设定为"chs",即采用简体中文编码方式。如果读者忘记了该行,那么像wprintf()这样的函数很有可能无法正确输出宽字符。
【责任编辑:
云霞 TEL:(010)68476606】