[ create a new paste ] login | about

Link: http://codepad.org/q5b4MSQy    [ raw code | output | fork ]

C++, pasted on Jul 31:
#include <map>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <iostream>
using namespace std;

//1946 12 30 0 -519 0 -490 0 9999 9 0 2 0
struct FILE_DATA
{
	int year;
	int month;
	int day;
	int param4;
	int param5;
	int param6;
	int param7;
	int param8;
	int param9;
	int param10;
	int param11;
	int param12;
	int t;
};

string data = 
"1946 12 30 0 -519 0 -490 0 9999 9 0 2 0\n" 
"1946 12 31 0 -528 0 -499 0 9999 9 0 2 0\n" 
"1947 1 	1  0 -477 0 -383 0 -366 0 1 0 0\n" 
"1947 1  2  0 -406 0 -356 0 -335 0 5 0 0\n" 
"1947 1  3  0 -481 0 -408 0 -373 0 0 2 0\n";

int main()
{
	int n = 0;
	FILE_DATA pDATA = {0};//Теперь нам нужна всего 1-на структура
	//Заменим наш укащатель на массив на карту (мапу)
	map<int, FILE_DATA> mymap;
	map<int, FILE_DATA>::iterator it;//итератор (типа счётчика)
	stringstream ss(data);//Инициализируем стрингпоток поток
	//Выделяем память под первую структуру массива
	for(n = 0;!ss.eof(); )
	{
		if
		(ss>>pDATA.year
           >>pDATA.month
           >>pDATA.day
           >>pDATA.param4
           >>pDATA.param5
           >>pDATA.param6
           >>pDATA.param7
           >>pDATA.param8
           >>pDATA.param9
           >>pDATA.param10
           >>pDATA.param11
           >>pDATA.param12
           >>pDATA.t
        )
		{
			//вот так добавлем в карту элемент
			//и не думаем о динамическом выделении памяти
			mymap.insert(make_pair(n,pDATA));
			n = n + 1;//увеличиваем счётчик структур
		}
	}
	if(n == 0)
		cout<<"File input.txt not contain correct data"<<endl;
	else
	{
		cout<<"Totlal count of read structures "<<n<<endl;
		//здесь у нас массив структур из n элементов
		//далее делам с ним что душе угодно
		//Показываю как читать карту
		for(it = mymap.begin(); it != mymap.end(); it++)
		{
			pDATA = (*it).second;
			cout<<setw(4)<<pDATA.year<<" "
				<<setw(2)<<pDATA.month<<" "
				<<setw(2)<<pDATA.day<<" "
				<<pDATA.param4<<" "
				<<pDATA.param5<<" "
				<<pDATA.param6<<" "
				<<pDATA.param7<<" "
				<<pDATA.param8<<" "
				<<pDATA.param9<<" "
				<<pDATA.param10<<" "
				<<pDATA.param11<<" "
				<<pDATA.param12<<" "
				<<pDATA.t<<endl;
		}
	}
	cout<<"Enter any key for exit"<<endl;
	getchar();
	return 0;
}


Output:
1
2
3
4
5
6
7
Totlal count of read structures 5
1946 12 30 0 -519 0 -490 0 9999 9 0 2 0
1946 12 31 0 -528 0 -499 0 9999 9 0 2 0
1947  1  1 0 -477 0 -383 0 -366 0 1 0 0
1947  1  2 0 -406 0 -356 0 -335 0 5 0 0
1947  1  3 0 -481 0 -408 0 -373 0 0 2 0
Enter any key for exit


Create a new paste based on this one


Comments: