这是个小实验..对话框中有一个edit control控件,关联的变量是 CString m_content.还有一个button控件.
要求按下button控件后,将m_content 转换成 std::string str..然后写入文件中.再读出来.显示到窗口中.这是对button控件的处理.代码如下
void CdlgDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE);
CW2A aW2A((const wchar_t*)m_content); std::string str = (const char *)aW2A; ofstream f("data.dat",ios::binary);
f.write((char *)&str,sizeof(string));
f.close();
string temp;
ifstream inf("data.dat",ios::binary|ios::in);
in.read((char*)&temp,sizeof(string));
inf.close();
CString cst(temp.c_str());
AfxMessageBox(cst);
OnOK();
}由于我对文件读写不是很懂,大家见谅了..但是必须用上边的形式.
读写文件应该没错,问题是:!!当我在edit conrol控件中输入1~4个汉字时,程序都正常.但是输入很多汉字时,就会出现
Debug assertion failed!
Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse);怎么解决呢?最让我郁闷的是输入4个汉字就正常..5个汉字就出错了..
要求按下button控件后,将m_content 转换成 std::string str..然后写入文件中.再读出来.显示到窗口中.这是对button控件的处理.代码如下
void CdlgDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE);
CW2A aW2A((const wchar_t*)m_content); std::string str = (const char *)aW2A; ofstream f("data.dat",ios::binary);
f.write((char *)&str,sizeof(string));
f.close();
string temp;
ifstream inf("data.dat",ios::binary|ios::in);
in.read((char*)&temp,sizeof(string));
inf.close();
CString cst(temp.c_str());
AfxMessageBox(cst);
OnOK();
}由于我对文件读写不是很懂,大家见谅了..但是必须用上边的形式.
读写文件应该没错,问题是:!!当我在edit conrol控件中输入1~4个汉字时,程序都正常.但是输入很多汉字时,就会出现
Debug assertion failed!
Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse);怎么解决呢?最让我郁闷的是输入4个汉字就正常..5个汉字就出错了..
解决方案 »
- 一个C++头文件
- 我是学java的学生,想要转行进行VC外挂的开发,有实力的进
- 导入dll中的多个函数怎么做
- 又是无法解析外部符号
- CHtmlView中载入的网页采用iframe编辑模式无法输入回车?
- 关于OPENGL的中文显示问题,需要高手给指点!!
- CDateTimeCtrl 怎样改变时钟颜色
- 总觉得ado在初始化的时候很慢比如coinitial,connect open速度很慢,有没有快点的
- 请问我建了一个Win32工程写了下面的代码:hwnd=CreateDialog(hInstance,(MAKEINTRESOURCE)IDD_DIALOG1,GetDeskTopWindow(),(DLGPROC)WndP
- 请问各位在Windows环境下都用什么编写C++程序?(不要回答VC,要小巧玲珑的那种)
- 关于listcontrol删除行的函数
- 第一次用VC开发程序的感受
你的CString中本来是不是unicode 如果是就没有必要(const wchar_t*)
不然就直接赋值给str可以
改成(LPCTSTR)m_content
sizeof(string)返回的是固定的值,4.......
void CTestControlDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CString sText, sFileName;
sFileName = "D:\\test.txt";
m_Text.GetWindowText( sText); char * pString = new char[ sText.GetLength() + 1]; if ( WriteStringToFile( sFileName, sText) )
if ( ReadStringToFile( sFileName, &pString))
SetDlgItemText( IDC_SHOWTEXT, pString);
//OnOK();
}BOOL CTestControlDlg::WriteStringToFile(const char * pFileName, const char * pString)
{
CFile File;
if ( File.Open( "D:\\test.txt", CFile::modeCreate | CFile::modeWrite))
{
File.Write( pString, strlen( pString) + 1);
File.Close();
return TRUE;
} return FALSE;
}BOOL CTestControlDlg::ReadStringToFile(const char * pFileName, char ** ppString)
{
CFile File;
if ( File.Open( pFileName, CFile::modeRead))
{
if( File.Read( *ppString, strlen( *ppString) ) )
{
File.Close(); return TRUE;
}
}
return FALSE;
}
如果我自己定义了一个类
class Node
{
//省略
private:
string name;
string num;
string sex;
}
那当我把Node写入文件时.
Node people;
ofstream f( "data.dat ",ios::binary);
f.write((char *)&people,sizeof(Node));是怎么写的 ??sizeof(Node)怎么计算?
string类的数据是怎么写进文件中的?每次的string类的数据长度不一,sizeof(string)却又是固定值。。我有点困惑了~希望大家再帮帮我。。感激不尽