fstream讀取資料,排序處理後,寫入資料
阿新 • • 發佈:2019-02-11
#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