c++あるファイルフォーマットの読み取りと書き込みの例[stl]
ファイル形式は次のとおりです.
nupt 1#123 sdsds 56#地方第三者地nupt 2#12 sdsdsd 56#地方第三者
nupt3 # 123df6 # etdfdfdf nupt4 # 123s6 # dfdfdfdfdf nupt5 # 123df56 # dfdfdfdfdfdf
nupt6 # 123456 # dfdf nupt8 # 123456 # dfdfdfdfdffdfdf
C++読み込みの例は次のとおりです.
nupt 1#123 sdsds 56#地方第三者地nupt 2#12 sdsdsd 56#地方第三者
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 10
class 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!='
')//
{
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<<"
!"<<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;
}