Pagini recente » Cod sursa (job #803609) | Istoria paginii utilizator/laura2018 | Algoritmiada 2014 - Clasament Runda 2, Open | Istoria paginii junior-challenge-2008 | Cod sursa (job #1349096)
#include <fstream>
#include <string>
using namespace std;
void getKeys(const string s, fstream &fout) {
size_t i = 0;
do {
i = s.find('"',i);
string key = s.substr(i+1,s.find('"',i+1)-i-1);
if (!key.empty())
fout<<key<<',';
i = s.find(',',i);
}while(i != string::npos);
fout << '\n';
}
void getValues(const string s, fstream &fout){
size_t i = s.find(':',0);
while( i != string::npos) {
string key;
i = s.find_first_not_of(" \n",i+1);
if(s[i] == '"')
key = s.substr(i+1,s.find('"',i+1)-i-1);
else
key = s.substr(i,s.find_first_of(",\n ",i+1)-i);
if( !key.empty() )
fout << key <<',';
i = s.find(':',i);
}
fout << '\n';
}
int main(){
fstream fin,fout;
fin.open("convertor.in",fstream::in);
fout.open("convertor.out",fstream::out);
string s;
bool flagKeys = true;
do{
getline(fin,s,'}');
if(flagKeys) {
if( !s.empty() && s.find_last_of(']') == string::npos )
getKeys(s,fout);
flagKeys = false;
}
if ( !s.empty() && s.find_last_of(']') == string::npos ){
getValues(s,fout);
}
}while(!fin.eof());
fin.close();
fout.close();
return 0;
}