新手练习 C++文件操作。我现在已经可以写入了,但是不会读取,原因是写入的时候以写入的方式打开了文件,但是读取的时候就纠结到了是不是需要将文件关闭一次在以读取的方式打开
class CFileOper
{
fstream m_pstrFile;
public :
CFileOper(const char *cFileDir)
{
try
{
m_pstrFile.open(cFileDir, ios::out | ios::binary);
if (!m_pstrFile.is_open())
{
throw "文件打开失败";
}
}
catch (const char * ErrorInfo)
{
cout << ErrorInfo;
}
}
void writeDataToFile(char *cData, const int &nDataCount)
{
for (int i = 0; i < nDataCount; i++)
{
// 每遇到 endl 引发一次同步,这种方式是不是会增加 IO ?还是使用手动吧
// m_pstrFile << cData[i] << endl;
m_pstrFile << cData[i] << "\n";
}
// 手动引发同步
m_pstrFile.sync();
}
void printFile(const char *cFileDir)
{
/* 主要的困惑就是这里,是不是需要关闭一次文件,然后再以读的方式打开?*/
if (!m_pstrFile.is_open())
{
cout << "Error opening file"; exit(1);
}
if (!m_pstrFile.tellg())
{
m_pstrFile.seekg(0, ios::beg);
}
char content[200] = { 0 };
int i = 1;
while (!m_pstrFile.eof())
{
m_pstrFile.getline(content, 100);
cout << i << " :" << content << endl;
i++;
}
}
virtual ~CFileOper()
{
m_pstrFile.close();
}
};
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.