写mfc的时候,尝试很多方法还是乱码
以下是问题代码
void CAddDlg::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
CInfoFile file;
file.ReadDocline();
for (list<msg>::iterator it = file.ls.begin(); it != file.ls.end(); it++)
{
m_oldEquipment.InsertString(0, (CString)it->name.c_str());
}
m_oldEquipment.SetCurSel(0);
OnCbnSelchangeCombo1();
}
以下是CInfoFile部分代码
void CInfoFile::ReadDocline()
{
ifstream ifs(_F_STOCK); //输入方式打开文件
char buf[1024] = { 0 };
num = 0; //初始化商品数量为0
ls.clear();
//取出表头
ifs.getline(buf, sizeof(buf));
while (!ifs.eof()) //没到文件结尾
{
msg tmp;
ifs.getline(buf, sizeof(buf)); //读取一行
num++; //商品数量加一
//AfxMessageBox(CString(buf));
char* sst = strtok(buf, "|"); //以"|"分隔
if (sst != NULL)
{
tmp.id = atoi(sst); //商品id
}
else
{
break;
}
sst = strtok(NULL, "|");
tmp.type = sst; //商品名称
sst = strtok(NULL, "|");
tmp.name = atoi(sst); //商品价格
sst = strtok(NULL, "|");
tmp.status = atoi(sst); //商品数目
sst = strtok(NULL, "|");
tmp.room = atoi(sst); //商品数目
sst = strtok(NULL, "|");
tmp.date = atoi(sst); //商品数目
ls.push_back(tmp); //放在链表的后面
}
ifs.close(); //关闭文件
}
以下是文件初始内容
尝试过使用多字节字符集
尝试过储存文件换编码
尝试调试过读取文件代码,没问题
尝试过转换调用csdn上字符编码转换函数
尝试过注释里面的编码
正常显示
你这msg结构怎么定义的啊?怎么name会是整型呢?? 然后这个整型你是怎么加到ComboBox中的呢?后面的注释和文件内容也是完全不一致
我觉得是ascii和unicode这两种编码格式问题,文件里是ascii的,项目默认可能是unicode
不用看注释哦,这个我改编的源码,所以注释没改