Pagini recente » Cod sursa (job #2516329) | Cod sursa (job #635437) | Cod sursa (job #2379323) | Cod sursa (job #230334) | Cod sursa (job #1349150)
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
void parsekeys(string s, ofstream &g){ //Functia de parsare a cheilor
for(size_t i=0;i<s.size();i++) {
string key;
if(s[i] == '"'){
key.push_back(s[i+1]);
i=i+2;
while(s[i]!='"'){
key.push_back(s[i]);
i++;
}
if (!key.empty()){
g<<key<<',';
i = s.find(',',i);
if(i == string::npos)
break;
}
}
}
g<<"\n";
}
void parsevalues(string s, ofstream &g){ //Functia de parsare a valorilor
for(size_t i=0;i<s.size();i++) {
string key;
if(s[i] == ':'){
while (s[i+1]=='\n' || s[i+1]==' '){
i++;
}
if(s[i+1] == '"'){
key.push_back(s[i+2]);
i=i+3;
while(s[i]!='"'){
key.push_back(s[i]);
i++;
}
}
else{
key.push_back(s[i+1]);
i=i+2;
while(s[i]!=',' && s[i]!='\n' && s[i]!=' ' && i<s.size() ){
key.push_back(s[i]);
i++;
}
}
if (!key.empty()){
g<< key <<',';
}
}
}
}
int main(){
ifstream f("convertor.in");
ofstream g("convertor.out");
string sir, s;
getline(f,s,'}'); //Citire prima linie pana la intalnirea caracterului '}'
parsekeys(s, g); //Afisarea cheilor (fiecare obiect - aceleasi chei)
parsevalues(s, g);//Valorile pentru primul obiect
g<<'\n';
while(!f.eof()){
getline(f,sir,'}');
if ( !sir.empty() && sir.find(']') == string::npos ){
parsevalues(sir, g);//Valorile pentru restul obiectelor
g<<'\n';
}
}
f.close();
g.close();
return 0;
}