Cod sursa(job #1358875)

Utilizator MmihaiMihai Mihailescu Mmihai Data 24 februarie 2015 20:18:24
Problema Convertor Scor 0
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 2.1 kb
#include <fstream>
#include <iostream>
#include <string>
#include <string.h>
#include <vector>
using namespace std;
int main() 
{ 
    std::ifstream file("parser.in");
    std::string str; 
    ofstream out("convertor.out");
  	string line;
  	vector<string> temp;
  	vector<string> values;
  	int number_of_values=0;
  
  	//require the number of values to parse corectly
  	std::ifstream see("parser.in");
  	 while (std::getline(see, str) && str.compare("}, {"))
  	 	number_of_values++;

  	number_of_values=number_of_values-1;
  	int iterations=0;
    while (std::getline(file, str) && str.compare("}]"))//jump over these lines
    {	
    	if(str.compare("[{")!=0)	//str contains the unparsed string
       		 {
       		 	std::string s = str;
				std::string delimiter = ":";
				
				size_t pos = 0;
				std::string token;
				
				
				while ((pos = s.find(delimiter)) != std::string::npos) 
				{
    				token = s.substr(0, pos);
    				
    				token.erase (token.begin(),token.begin()+1); 
  					token.erase (token.end()-1,token.end()); 
  					token=token+",";
  					iterations++;
  					if(iterations<=number_of_values)
    				temp.push_back(token);//for better armony in the program
    					
    				s.erase(0, pos + delimiter.length());
    				s.erase(s.begin(),s.begin()+1);
    				//cases
    				if(s[0]=='\"')
    				{
    					s.erase (s.begin(),s.begin()+1); 
  						s.erase (s.end()-1,s.end());
  						s.erase (s.end()-1,s.end());
    				}
    				else
    				{
    					if(s[s.size()-1]==',')
    						s.erase (s.end()-1,s.end());
    					
    				}
    				s=s+",";//just like in the example
    				values.push_back(s);
				}	
       		 }
       		

    	}
    	
    	string valuesLine;
    	int grouping=0;
				for(unsigned int i=0;i<temp.size();i++)
					{	
						line=line+temp[i];
					}
					out<<line<<endl;
			
				for(unsigned int i=0;i<values.size();i++)
				{
					if(grouping<number_of_values)
					valuesLine=valuesLine+values[i];
					grouping++;
					if(grouping==number_of_values)
					{
						out<<valuesLine<<endl;
						valuesLine="";
						grouping=0;
					}
				}
				
				

    return 0;
}