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

本文介绍了一个使用C++进行文件读写的示例程序,包括如何从文件中读取特定格式的数据,并将数据存储到结构体数组中,然后输出这些数据。此外,还展示了如何在遍历数据后再次写回文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下文件格式:

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 10
class 优快云User
{
public:
	string username;
	string password;
	string email;
};
typedef vector<优快云User> 优快云USER;
int ReadIn(int ReadOfNumber,优快云USER &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 优快云User &prUser)
{
	cout<<prUser.username<<" "<<prUser.password<<" "<<prUser.email<<endl;

}
void MyFind(const 优快云User &prUser)
{
	if (prUser.username=="nupt1")
	{
		cout<<"-------------------------已经找到!"<<endl;
		cout<<prUser.username<<" "<<prUser.password<<" "<<prUser.email<<endl;
	}
}
bool WriteFile(优快云USER temp)
{
	ofstream ofile("cadn.sql",ios::app|ios::out);
	if (!ofile)
	{
		cout<<"打开文件失败!"<<endl;
		return false;
	}
	优快云USER::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()
{
	优快云USER 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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值