Pagini recente » Cod sursa (job #2369127) | Cod sursa (job #3234461) | Cod sursa (job #3139102) | Cod sursa (job #1691406) | Cod sursa (job #1357017)
#include <fstream>
#include <string>
using namespace std;
void scrieCheile(fstream &f, fstream &g)
{
char ch;
string cheie;
do
{
while (f>>skipws>>ch)
if (ch=='"')//urmeaza o cheie
break;
f>>noskipws>>ch;
while (ch!='"')
{
cheie+=ch;
f>>noskipws>>ch;
}
cheie+=',';
g<<cheie;
cheie.clear();
while (f>>skipws>>ch)//cautam urmatoarea cheie (sau ne oprim)
if (ch==',' || ch=='}')
break;
}while(ch!='}');
g<<'\n';
}
void scrieValorile(fstream &f, fstream &g)
{
char ch;
string valoare;
bool text;
do
{
while (f>>skipws>>ch)
if (ch==':')// urmeaza o valoare
break;
f>>skipws>>ch;
text=0;
if (ch=='"')
text=1;
if (text)// citim textul
{
f>>noskipws>>ch;
while (ch!='"')
{
valoare+=ch;
f>>noskipws>>ch;
}
valoare+=',';
f>>skipws>>ch;
}
else//citim numarul (tot intr-un string)
{
valoare+=ch;
f>>skipws>>ch;
while (ch!=',' && ch!='}' )
{
if(ch!='\n' && ch!='\t')
valoare+=ch;
f>>skipws>>ch;
}
valoare+=',';
}
g<<valoare;
valoare.clear();
}while (ch!='}');
g<<'\n';
}
int main()
{
char ch;
fstream f,g;
f.open("convertor.in",ios::in);
g.open("convertor.out",ios::out);
while (f>>ch)// caut prima { pt a scrie cheile
if (ch=='{')
break;
//scriem prima linie (cheile)
scrieCheile(f,g);
f.seekg(0,ios::beg);
while (f>>ch)
{
if (ch=='{')
scrieValorile(f,g);
if (ch==']')
break;
}
return 0;
}