读书人

汉字读取和显示有关问题

发布时间: 2012-02-28 13:06:35 作者: rapoo

汉字读取和显示问题
在VC6.0下,一个char *text,怎么从文件中读取一个汉字,保存在*text中,又怎么显示出来.
是不是读取文件只能读取一个字节?
保存是不是把第一个读取的字节存在*text中,第二个存在++*text中?
那显示呢?

[解决办法]
用数组输入汉字,一个汉字两个字节很好算的, 在vc6.0里面输出就和ASCII码一样
vs2005通过:
#include <iostream>

using namespace std;

void main()
{
char in[3];
cin > > in;
cout < < in < < endl;
}
[解决办法]
FILE *fp=fopen( "test.txt ", "r ");
char str[256];
fscanf(fp, "%s ",str);

读汉字和读ASCII是一样的,因为细节的东西系统已经为你做了,比如判断一个字符两字节还是一字节。显示的时候与ASCII一样把str指针传递出去就行了。
C语言中字符在文件中和内存中的布局是一样的,关键是把这个布局传递给他的解释者,这个解释者需要知道字符的编码方式,正常情况下是ANSI(记事本的默认形式),但若是一个unicode文件用上述代码来读就是乱码了,要用fwscanf
[解决办法]
应该先读一个字节
判断是不是双字 如果是就在读一个字节
不是 那就是字母或别的什么符号
unsigned int ss
if( IsDBCSLeadByte(text[i]))
{
ss = (text[i] < < 8) + 256 + text[i+1];
}
else
{
ss = text[i];
}
[解决办法]
数据无论还是汉字,还是字母都是0,1的方式存放的
所不同的是汉字是两个字节,而且首位是以1开头
字母是 一个字节,0开头
存的时候不用管直接把数据写进去好了,读出来的时候保存下.

读书人网 >C++

热点推荐