200分,关于unicode问题我已经研究了好几天了,仍然未能解决。如果我的问题可以解决,立刻给,绝不食言!

striking 2003-01-17 02:06:34
请看,一个简单的问题:
读取UNICODE文本文件。
朋友,你主要是帮我实现以下即可:
假设unicode.tx保存为unicode格式文本文件。
里面存放着一些字符
怎么样实现读取一行,假设存到wchar_t str[]数组 ,并显示到屏幕,
我希望你能给出代码。
用Win32 console
...全文
28 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyw2278 2003-01-17
  • 打赏
  • 举报
回复
能不能将你的test1.txt 发出来

我给你调试一下
要找Unicode文件很难呢?
chenjiming 2003-01-17
  • 打赏
  • 举报
回复
我怀疑你转换语句错了,铁出来
striking 2003-01-17
  • 打赏
  • 举报
回复
问题已解决,兑现我的若言。
core(酒载青山) 我将新开一个给分。
core 2003-01-17
  • 打赏
  • 举报
回复
把"r"改成"rb"
striking 2003-01-17
  • 打赏
  • 举报
回复
我是在线等啊,,,是不是很难实现呢,我想应该不会吧。
我可能有个没转过来,感谢你们的回复了,谢谢!
可是我还没得到我想要的结果啊!
striking 2003-01-17
  • 打赏
  • 举报
回复
ruihuahan(飞不起来的笨鸟) :
我该怎么做呢
striking 2003-01-17
  • 打赏
  • 举报
回复
to all : 谢谢你们的回复:
请看我是怎么样写的,但是不是我要的结果:
#include "atlconv.h"
FILE *fp = NULL;

if( !( fp = fopen( "C:\\test1.txt" , "r" )))//test1.txt is a Uicode
return 0;
wchar_t ch1 = fgetwc(fp);//255
wchar_t ch2 = fgetwc(fp);//254
wchar_t str[5];//读取5个字符,假设文件存在若干个字符,

for(int i=0; i<NUM; i++)
str[i] = fgetwc(fp);

//转化为ansi,然后输出
USES_CONVERSION;

aa = W2A(str );
if(aa)
cout << aa << endl;

这样只有第一个字符
ruihuahan 2003-01-17
  • 打赏
  • 举报
回复
用wchar_t的函数输出,ansi函数遇0x00则结束字符串,而unicode串中有许多0x00,如字符A为ox0030,在内存中的表示为 30 00,所以只输出了第一个字符。
striking 2003-01-17
  • 打赏
  • 举报
回复
TO isdong(有些事情应该忘记,有些事情值得回忆):
从一个unicode文件读取能直接存放在char数组吗?
core 2003-01-17
  • 打赏
  • 举报
回复
如果你的文件是用notepad保存的,头两个字节和文件内容无关
用fgetws可以读unicode一行,至于显示,就用不着说了
striking 2003-01-17
  • 打赏
  • 举报
回复
我知道,,,unicode文件的头两个字节为255,254
假设我们从第三个字节开始读取5个字符吧,
怎么样读取到一个数组中呢。
everandforever 2003-01-17
  • 打赏
  • 举报
回复
UNICODE到ANSI的转换:

WideCharToMultiByte()

SDK函数.
________

这样只有第一个字符
_____
这是因为该字符的UNICODE第二个字节为0.
isdong 2003-01-17
  • 打赏
  • 举报
回复
Example

// example for CStdioFile::ReadString
extern CStdioFile f;
char buf[100];

f.ReadString( buf, 99 );

striking 2003-01-17
  • 打赏
  • 举报
回复
我是这样写的,麻烦看一下:
FILE *fp = NULL;
FILE *fp1 =NULL;

if( !( fp = fopen( "C:\\test1.txt" , "r" )))//test1.txt is a Uicode
return 0;
wchar_t str[100];
fgetws(str, 100, fp);
//转化为ansi,然后输出
这样只有第一个字符
everandforever 2003-01-17
  • 打赏
  • 举报
回复
忘了读一行的函数是什么了.
不过还行符号是_T("\r\n")

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧