Pagini recente » Rating Calita Raluca (rcalita) | Cod sursa (job #2400869) | Cod sursa (job #1997587) | Cod sursa (job #621056) | Cod sursa (job #1358869)
#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;
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;
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;
}