STU stu;
CStdioFile file;
CString strLine;
file.Open(_T("学生信息.txt"),CStdioFile::modeWrite|CStdioFile::modeCreate
|CStdioFile::modeNoTruncate|CStdioFile::modeRead);
while (file.ReadString(strLine))
{
strLine.GetBufferSetLength(e_Id.GetLength());
if(strLine==e_Id)
MessageBox(_T("学号已存在!"));break; //验证学号是否已存在
}
file.SeekToEnd(); UpdateData(TRUE); if(e_Id==""||e_Name==""||e_Gender==""||e_College==""||e_Class==""||e_Major=="")
MessageBox(_T("请填写完整信息!"));
else
{
stu.Id=e_Id;
stu.Name=e_Name;
stu.Gender=e_Gender;
stu.College=e_College;
stu.Major=e_Major;
stu.Class=e_Class; //获取编辑框里内容 if(file.GetLength()==0)
{
unsigned short int nUFHead = 0xfeff;
file.Write(&nUFHead, sizeof(short int));
}
stu.Id.Append(L"$");
stu.Name.Append(L"$");
stu.Gender.Append(L"$");
stu.College.Append(L"$");
stu.Major.Append(L"$");
stu.Class.Append(L"$\r\n"); char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );
setlocale( LC_CTYPE, "chs" ); file.WriteString(stu.Id);
file.WriteString(stu.Name);
file.WriteString(stu.Gender);
file.WriteString(stu.College);
file.WriteString(stu.Major);
file.WriteString(stu.Class); //写入文件
setlocale( LC_CTYPE, old_locale );
free( old_locale );
file.Flush();
file.Close();
MessageBox(_T("已添加成功!"));
}
}
STU 是结构体 定义没问题。 现在是写入文件的中文是乱码,读取估计也不对,请大神指点。。
CStdioFile file;
CString strLine;
file.Open(_T("学生信息.txt"),CStdioFile::modeWrite|CStdioFile::modeCreate
|CStdioFile::modeNoTruncate|CStdioFile::modeRead);
while (file.ReadString(strLine))
{
strLine.GetBufferSetLength(e_Id.GetLength());
if(strLine==e_Id)
MessageBox(_T("学号已存在!"));break; //验证学号是否已存在
}
file.SeekToEnd(); UpdateData(TRUE); if(e_Id==""||e_Name==""||e_Gender==""||e_College==""||e_Class==""||e_Major=="")
MessageBox(_T("请填写完整信息!"));
else
{
stu.Id=e_Id;
stu.Name=e_Name;
stu.Gender=e_Gender;
stu.College=e_College;
stu.Major=e_Major;
stu.Class=e_Class; //获取编辑框里内容 if(file.GetLength()==0)
{
unsigned short int nUFHead = 0xfeff;
file.Write(&nUFHead, sizeof(short int));
}
stu.Id.Append(L"$");
stu.Name.Append(L"$");
stu.Gender.Append(L"$");
stu.College.Append(L"$");
stu.Major.Append(L"$");
stu.Class.Append(L"$\r\n"); char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );
setlocale( LC_CTYPE, "chs" ); file.WriteString(stu.Id);
file.WriteString(stu.Name);
file.WriteString(stu.Gender);
file.WriteString(stu.College);
file.WriteString(stu.Major);
file.WriteString(stu.Class); //写入文件
setlocale( LC_CTYPE, old_locale );
free( old_locale );
file.Flush();
file.Close();
MessageBox(_T("已添加成功!"));
}
}
STU 是结构体 定义没问题。 现在是写入文件的中文是乱码,读取估计也不对,请大神指点。。
解决方案 »
- CSDN的搜索功能越来越差了
- 利用TabControl控件做属性页遇到问题,请高手帮忙
- 用atl写dll,method中return type及[out retval]参数选项怎么是灰的?
- 继续提问求解答.关于16进制ASCII转换成字符的方法
- VC中Access数据库的问题,总是提示操作失败,无当前记录!
- VC6.0,重载,同名函数参数分别为常量引用与整型,会调用错函数,BUG?
- 不知哪里有devparter studio professional 7.1下载?
- vc有什么好的辅助工具可以提高开发速度
- How to creat check style menu?
- 关于网络监视程序的设计(多多指教)
- VS2010 向列表控件插入数组中的值的时候出现下面情况???但是VC6.0中不会这样。??为什么?
- 计算机丢失SMAFeaBackbone.dll?
/*
EF BB BF UTF-8
FE FF UTF-16/UCS-2, little endian
FF FE UTF-16/UCS-2, big endian
FF FE 00 00 UTF-32/UCS-4, little endian.
00 00 FE FF UTF-32/UCS-4, big-endian.
*/
然后用“记事本打开”
改成多字节再试试
{
CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeWrite);
CString strText(_T("Hello,你好,世界World!);
file.Write(strText, strText.GetLength() * sizeof(TCHAR);
file.Close();
}
catch(CFileException* e)
{
e->ReportError();
e->Delete();
}