今天看书看到了C++探秘中的文件I/O操作那一块,可是书上的例子读取的是int类型的数据,后来,我尝试了一下读取char类型的数据,可以很好地读取,我将在下篇文章介绍。然后,我又尝试了一下读取string类型的数据,也是能够读取,但是,一旦尝试了读取比较大的数据,就不行了,尽管能够完整的读出来,但是!如果文本文件中空行就不能读取出来。
#include "iostream"
#include "fstream"
#include "windows.h"
#include "string"
using namespace std;
int main()
{
ifstream in("C:\\操作.txt",ios::binary);
if (!in.is_open())
{
cout<<"打开失败!"<<'\n';
}
else
{
ofstream out("C:\\写入8.txt",ios::binary);
if (!out.is_open())
{
cout<<"打开文件失败!"<<'\n';
}
else
{
cout<<"打开文件成功!"<<'\n';
string str;
while(!in.eof())
{
in>>str;
out<<str<<endl;
}
out.close();
}
}
system("pause");
return 0;
}
能够完整的读出来,可是空行的却不能,也不能换行。换行简单,我们加个"\r\n",就行了。可是文本文件中,有空行的还是不显示出来。因此,我就开始研究。最后,我怀疑是eof的问题,其实最终验证并不是,而是in>>str这句代码的问题。于是换了种读取的方法,看下面的完整的代码:
#include "iostream"
#include "fstream"
#include "windows.h"
#include "string"
using namespace std;
int main()
{
ifstream in("C:\\测试.txt");
if (!in.is_open())
{
cout<<"打开失败!"<<'\n';
}
else
{
ofstream out("C:\\写入4.txt");
if (!out.is_open())
{
cout<<"打开文件失败!"<<'\n';
}
else
{
cout<<"打开文件成功!"<<'\n';
string str;
while(getline (in, str))
{
out<<str<<endl;
}
out.close();
}
}
system("pause");
return 0;
}
最终装逼成功!