c++某种文件格式的读取与写入范例[stl]

来源:互联网 发布:阿里云上搭建lamp 编辑:程序博客网 时间:2024/06/04 21:55

如下文件格式:

nupt1  #   123sdsds56  #   地方第三方地
nupt2  #   12sdsdsd56  #   地方第三方

nupt3  #   123df6  #   etdfdfdf
nupt4  #   123s6  #   dfdfdfdfdf
nupt5  #   123df56  #   dfdfdfdfdfdf

nupt6   #   123456  #   dfdf
nupt8   #   123456  #   dfdfdfdfdffdfdf

C++读取范例为:

#pragma warning(disable:4786)#include <iostream>#include <fstream>#include <string>#include <vector>#include <algorithm>using namespace std;#define ReadNumber 10class CSDNUser{public:string username;string password;string email;};typedef vector<CSDNUser> CSDNUSER;int ReadIn(int ReadOfNumber,CSDNUSER &m_Userdata){ifstream ifile("cadn.sql");if(!ifile){cout<<"csdn data cannot be opened!"<<endl;return 0;}char ch;int i;for (i=0;i<ReadOfNumber;i++)//读取数目{if(!ifile.get(ch)){            cout<<"文件已经读完!"<<endl;return 0;}while (ch!='#')//读取用户名{if (ch==' ')//跳过空格{ifile.get(ch);continue;}m_Userdata[i].username+=ch;ifile.get(ch);}ifile.get(ch);while (ch!='#')//读取密码{if (ch==' '){ifile.get(ch);//跳过空格continue;}m_Userdata[i].password+=ch;ifile.get(ch);}ifile.get(ch);while(ch!='\n')//读取邮箱{if (ch==' '){ifile.get(ch);continue;}            m_Userdata[i].email+=ch;ifile.get(ch);}}ifile.close();return 1;}void OutPut(const CSDNUser &prUser){cout<<prUser.username<<" "<<prUser.password<<" "<<prUser.email<<endl;}void MyFind(const CSDNUser &prUser){if (prUser.username=="nupt1"){cout<<"-------------------------已经找到!"<<endl;cout<<prUser.username<<" "<<prUser.password<<" "<<prUser.email<<endl;}}bool WriteFile(CSDNUSER temp){ofstream ofile("cadn.sql",ios::app|ios::out);if (!ofile){cout<<"打开文件失败!"<<endl;return false;}CSDNUSER::iterator m_iterator;for (m_iterator=temp.begin();m_iterator!=temp.end();m_iterator++){ofile<<m_iterator->username<<'#' <<m_iterator->password<<'#' <<m_iterator->email<<endl;}ofile.close();return true;}int main(){CSDNUSER m_Userdata(ReadNumber);    if (!ReadIn(ReadNumber,m_Userdata))    {cout<<"\n 失败!"<<endl;return -1;    }for_each(m_Userdata.begin(),m_Userdata.end(),OutPut);for_each(m_Userdata.begin(),m_Userdata.end(),MyFind);    WriteFile(m_Userdata);for_each(m_Userdata.begin(),m_Userdata.end(),OutPut);return 1;}


 

原创粉丝点击