}; class CDigitalToStringDoc : public CDocument { protected: // create from serialization only CDigitalToStringDoc(); DECLARE_DYNCREATE(CDigitalToStringDoc) public: CDigital m_DigitalData[100]; bool m_isLoaded; CObList m_DigitalList; // Attributes .... }; //The class CDigital implementation in here!CDigital::CDigital(const char *szDigital,double digital ):m_strDigital(szDigital),m_dblDigital(digital){}//End of the implementation of the class CDigital! CDigitalToStringDoc::CDigitalToStringDoc() { // TODO: add one-time construction code here this->m_isLoaded=false;}
UINT nMax;
ReadString( (LPTSTR)sz, nMax );
CStdioFile f;
CString strline;
...
f.ReadString(strline);
就可以了。
如果要读整个文件到另一个文件中:
CStdioFile fo;
...
while (f.ReadString(strline))
{
fo.WriteString(strline+"\n");
}
CStdio file;
CString tmp;
CStringArray atrrArray;
//用debug跟踪以下几句错
if(!file.ReadString(tmp)) break;
strArray.Add(tmp);
}while(1);
可能是指针用错了或可能是字符串转化为数组时出问题了,怎么改,谁帮帮忙?
strArray.Add(tmp);
throw( CFileException );BOOL ReadString(CString& rString);
throw( CFileException );
------------------------------
while(file.ReadString(tmp))
strArray.Add(tmp);
------------------------------
我劝你还是用CObList类好些!
例如:
void CDigitalToStringDoc::OnReadFromFile()
{
// TODO: Add your command handler code here
CStdioFile fileInput;
CString strTemp;
CDigital *pDigital;
fileInput.Open("DigitalTest.txt",CFile::modeRead);
this->m_isLoaded=true; while(true)
{
if( fileInput.ReadString(strTemp))
{
pDigital=new CDigital;
pDigital->m_strDigital=strTemp;
m_DigitalList.AddTail(pDigital);
}
else
break;
} fileInput.Close();
CMainFrame *pFrame=(CMainFrame*)::AfxGetMainWnd();
pFrame->GetActiveView()->Invalidate();
}
void CDigitalToStringDoc::OnCloseDocument()
{
// TODO: Add your specialized code here and/or call the base class
CDigital * pDigital;
while(!this->m_DigitalList.IsEmpty())
{
pDigital=(CDigital*)this->m_DigitalList.RemoveHead();
delete pDigital;
}
CDocument::OnCloseDocument();
}
void CDigitalToStringDoc::OnWriteToFile()
{
// TODO: Add your command handler code here
CStdioFile fileOutput;
CString strTemp;
fileOutput.Open("DigitalTest.txt",
CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite); //定位文件指针到文件的末尾,否则会覆盖以前的数据
fileOutput.SeekToEnd();
//写入测试数据
for(int i=0;i<100;i++)
{
strTemp.Format("%f",this->m_DigitalData[i].m_dblDigital);
strTemp+="\n";//加入换行符
fileOutput.WriteString(strTemp);
}
fileOutput.Close();}
void CDigitalToStringDoc::OnCalculator()
{
// TODO: Add your command handler code here
// 测试用数据
double TestData[100];
for(int i=0;i<100;i++)
{
TestData[i]=i*0.97857779557;
this->m_DigitalData[i].m_dblDigital=TestData[i];
}
}
class CDigital:public CObject
{
public:
CString m_strDigital;
double m_dblDigital;
CDigital(const char *szDigital="",double digital=0);
};
class CDigitalToStringDoc : public CDocument
{
protected: // create from serialization only
CDigitalToStringDoc();
DECLARE_DYNCREATE(CDigitalToStringDoc)
public:
CDigital m_DigitalData[100];
bool m_isLoaded;
CObList m_DigitalList;
// Attributes
....
};
//The class CDigital implementation in here!CDigital::CDigital(const char *szDigital,double digital ):m_strDigital(szDigital),m_dblDigital(digital){}//End of the implementation of the class CDigital!
CDigitalToStringDoc::CDigitalToStringDoc()
{
// TODO: add one-time construction code here
this->m_isLoaded=false;}