1. 程式人生 > >fstream讀取資料,排序處理後,寫入資料

fstream讀取資料,排序處理後,寫入資料

#include "stdafx.h"
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
struct sInfo
{
	char	szName[64];
	char	szValue[32];
	char	szOrigins[64];
};

bool UDgreater( sInfo elem1, sInfo elem2 )
{
	return atoi(elem1.szValue) < atoi(elem2.szValue);
}

int _tmain(int argc, _TCHAR* argv[])
{
	//資料讀取
	vector<sInfo> m_product;
	ifstream inFile("./SRC_DATA.txt");
	string sLine;
	getline(inFile, sLine, '\n');
	sInfo info;
	vector<string> vTemp;
	string sTitle = sLine;

	while (!inFile.eof())
	{
		getline(inFile, sLine, '\n');
		int i = 0, j = 0;
		vTemp.clear();
		while(i = sLine.find(" ", i))
		{
			string strr = sLine.substr(j, i - j);
			vTemp.push_back(strr);
			
			if (-1 == i)
				break;
			++i;
			j = i;
		}
		strncpy(info.szName, vTemp[0].c_str(), sizeof(info.szName));
		strncpy(info.szValue, vTemp[1].c_str(), sizeof(info.szValue));
		strncpy(info.szOrigins, vTemp[2].c_str(), sizeof(info.szOrigins));
		m_product.push_back(info);
	}
	
	inFile.close();
	//資料處理
	sort(m_product.begin(), m_product.end(), UDgreater);

	//資料寫入
	ofstream outFile("./SRC_DATA_result.txt");
	outFile<<sTitle<<'\n';
	
	for (int i = 0; i < m_product.size(); ++i)
	{
		outFile<<m_product[i].szName<<" "
			<<m_product[i].szValue<<" "
			<<m_product[i].szOrigins<<'\n';
	}
	outFile.close();
	return 0;
}

SRC_DATA.txt:

name price origins
car 50 china
mobile 10 usa
auto 30 russia

SRC_DATA_result.txt:

name price origins
mobile 10 usa
auto 30 russia
car 50 china