1、读取文件的时候,,如果要读的是不知道长度的字符串怎么办?
2、怎样在应用程序当前目录新建一个文件;
3、怎么判断目前有没有读完整个文件?
4、如果要用串行化,,怎么使用用?举个例子:在当前目录打开一个文件,读取记录到类
class CRecord
{
public:
CString m_strTitle;
CTime m_tmBeginDate;
bool m_blnIsWholeDayEvent;
int m_nImportance;
public:
CRecord(void);
~CRecord(void);
};的变量里面??
第一个问题10分,第二、三个问题15分,第四个问题20分。

解决方案 »

  1.   

    1:一个字节一个字节读。
    2:TCHAR szCurPath[ MAX_PATH + 1 ];
       GetCurrentDirectory( szCurPath, MAX_PATH );
       lstrcat( szCurPath, "\\" );
       lstrcat( szCurPath, youfilename );
       CFile file;
       file.Open( szCurPath, CFile::modeCreate | CFile::modeWrite );
       //write string at here
       file.Close();
    3: file.GetLength()可获取文件大小。
    4: 串行化,直接用”>>“可以读,用”<<“可以写;
      

  2.   

    1、读取文件的时候,,如果要读的是不知道长度的字符串怎么办?
    读取指定长度的内容,如:char buf[100];2、怎样在应用程序当前目录新建一个文件;
    确定应用程序的路径. GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。
     Example:
     TCHAR exeFullPath[MAX_PATH] // MAX_PATH在API中定义了吧,好象是128
     GetModuleFileName(NULL,exeFullPath,MAX_PATH) 
    然后使用CreateFile3、怎么判断目前有没有读完整个文件?
    CFile::GetLength,判断你读取的内容是否超过了这个4、如果要用串行化,,怎么使用用?举个例子:在当前目录打开一个文件,读取记录到类
    class CRecord
    {
    public:
    CString m_strTitle;
    CTime m_tmBeginDate;
    bool m_blnIsWholeDayEvent;
    int m_nImportance;
    public:
    CRecord(void);
    ~CRecord(void);
              void Serialize( CArchive& ar );
    };的变量里面??
    这样添加一个void Serialize( CArchive& ar );函数,实现如下:
    void CRecord::Serialize( CArchive& ar )
    {
    if (ar.IsStoring())
    {
                   ar<<你要存的东西
    }
    else
    {
                   ar>>你要取的东西
    }
    }
      

  3.   

    谢谢,,第四个能否详细点,如果不是在Serialize()中打开文件,应该怎样操作?
      

  4.   

    我绝着第一个问题,应该动态分配内存。。
    以前在C下用的malloc,在VC++里,我想应该是NEW来完成。
      

  5.   

    我的那个record类不支持串行化的,如果改成支持的,程序别的地方会出错,我明白Serialize是怎么做的,但是不知道怎么跟file对象联系起来,,so。
      

  6.   

    请问CFile::GetLength得到文件长度,,不过我怎么知道我当前读到哪个地方了?
    怎么判断是不是超过了文件长度?