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++読み込みの例は次のとおりです.
#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; }