现有一文本文件格式为Unicode。 内容汉字。我想从文件中每次读取一个汉字,求大神解答?
最好附上代码说明,谢谢大神!!
c++ 从中文文本文件中一次读取一个中文?
答案:3 悬赏:80 手机版
解决时间 2021-03-01 12:53
- 提问者网友:城市野鹿
- 2021-03-01 04:10
最佳答案
- 五星知识达人网友:千夜
- 2021-03-01 05:20
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("c:\\1.txt","rt+"))==NULL)
{
printf("\nCannot open file, strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
main()
{
FILE *fp;
char ch;
if((fp=fopen("c:\\1.txt","rt+"))==NULL)
{
printf("\nCannot open file, strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
全部回答
- 1楼网友:走死在岁月里
- 2021-03-01 07:10
unicode 文件需要跳过最前面两个字节,那个存储的是0xfffe,那个是Unicode的标记
然后 就是 两个字节一读
- 2楼网友:持酒劝斜阳
- 2021-03-01 06:21
如果是在多字节(multibyte 非unicode)模式下,无法完全准确的保障准确性。
因为在多字节模式下,汉字2字节,英文、符号和控制字符都是1字节,读取文件的操作无法保障完全正确的识别。多数情况下,可以每次读取2字节,判断第一个字节的ascii码,如果大于127,那么通常是2字节汉字。
而在unicode模式下读取unicode模式的文本文件(带有bom字头),就没有这个问题了,这种模式下,所有字符都占2字节,那么读取内容的时候,每个wchar的读取,就是一个汉字或者一个字符。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯