首页 新闻 会员 周边 捐助

谁来帮我看看到底出了什么问题,求指点

0
悬赏园豆:20 [已解决问题] 解决于 2012-04-22 17:30

#include <iostream>
#include <fstream>
using namespace std;
void main()
{
 wifstream infile("测试.txt",ios::in);
 wchar_t * p = new wchar_t[100];
 wchar_t * q = new wchar_t[100];
 q = L"我是一个学生";
 if(!infile)
  cerr << "open error!" << endl;
 infile >> p;
 setlocale ( LC_ALL, "" );
 wcout << p[1] << endl;
 setlocale ( LC_ALL, "" );
 wcout << q[1] << endl;
// wprintf(p);
// wprintf(q);
}

 

 

那个"测试.txt"里面就一句话“我是一个学生”,可是为什么如果直接用L“我是一个学生”如q就可以正常输出,而从文件里面读出来的却不可以呢?还是一些符号的乱码。但是两个都可以用wprintf全部输出,但是我想要他们一个一个字符输出,q可以实现但p不行...

我搞不懂很久了...希望大家可以帮忙看看,深表感谢...

问题补充:

我用的是VC2010

 

 

发现把代码中的对应行改成这个样子就什么都输出不了,请问这是为什么??

 setlocale ( LC_ALL, "" );
 wcout << p << endl;
 setlocale ( LC_ALL, "" );
 wcout << q << endl;

但是如果变成

 setlocale ( LC_ALL, "" );
//wcout << p << endl;
setlocale ( LC_ALL, "" );
wcout << q << endl;

这样的话q就又可以输出了,十分迷茫啊....

清浪浮云的主页 清浪浮云 | 初学一级 | 园豆:172
提问于:2012-04-22 10:00
< >
分享
最佳答案
1

读取完成之后设置:infile.imbue(locale("chs"));

 

wifstream infile("测试.txt",ios::in);

infile.imbue(locale("chs"));

收获园豆:20
zsounder | 老鸟四级 |园豆:2819 | 2012-04-22 13:42

太厉害了,加上去之后就可以了...太感谢了...每次都是这样的,以为没问题了然后发现又一个问题出现之后不能解决...进度就被拖着了,再次表示感谢,谢谢指导了,我没有深入了解,但是却想用上,没人帮助确实不太行...呵呵...

清浪浮云 | 园豆:172 (初学一级) | 2012-04-22 17:27
其他回答(1)
0

没有返回值吧?

iia | 园豆:6 (初学一级) | 2012-04-22 13:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册