io读写
之前读取从文件读取一行内容寻找分割符的时候自己实现不一定正确,而且代码过多。我们可以用c++ 的 istream来处理。
方法1
#include<fstream>
void ReadFile(const char * pathname)
{
std::ifstream iofile(pathname);
std::string line;
size_t delimiterpos = 0;
while(getline(iofile,line))
{
xxxxx处理分隔符
if((delimiterpos = line.find_first_of(分隔符))!=std::string::npos)
{
xxxx
}
else
{
}
}
}
方法2 从文件中读取每行的内容,然后按分隔符分开,这个在处理网络I/O中很常见
void ReadFile(const char * pathname)
{
std::fstream file;
file.open(pathname,std::fstream::in|std::fstream::out);
if(!file)
{
cerr<<"open failed";
return ;}
}
size_t size = 0;
vector<string> dst;
vector<string> line;
while(getline(file,line))
{
boost::split(dst,line,boost::is_any_of("分隔符"),boost::token_compress_on);
size = dst.size();
cout << "分隔后的目标字符串:" ;
for(size_t i = 0 ; i < size ; ++i)
{
cout << dst[i] ;
}
cout << endl;
}
}
创建文件
使用fstream创建文件的时候,如果 mode 里面没有 ios::out 的话会创建失败
fstream file;
file.open("test.txt",ios::in); //如果我们加上 ios::out即可创建成果
if(!file)
cout << "创建失败" <<endl;
其中,trunc 与 app都设置会崩溃 ,trunc 设置了 out没设置也会崩溃
- in
- out
- binary
- ate
- app
- trunc