Pagini recente » Cod sursa (job #2810390) | Cod sursa (job #819661) | Cod sursa (job #1892178) | Cod sursa (job #871351) | Cod sursa (job #1343121)
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Converter
{
private:
ifstream in;
ofstream out;
void printKeys()
{
char current;
in.get(current);
int readKey = 0;
while (current != '}')
{
in.get(current);
if (current == '"')
{
if (readKey == 0)
{
string key;
readTextValue(key);
out << key << ",";
in.get(current);
while (!isalnum(current) && current != '"')
in.get(current);
if (current == '"')
readKey = 1;
else
readKey = 0;
}
else
readKey--;
}
}
}
void readTextValue(string& field)
{
char current;
in.get(current);
while (current != '"')
{
field.push_back(current);
in.get(current);
}
}
void readNumberValue(char c, string& field)
{
char current = c;
while (isdigit(current))
{
field.push_back(current);
in.get(current);
}
}
public:
Converter(string inputFile, string outputFile)
{
in.open(inputFile, ifstream::in);
out.open(outputFile, ofstream::out);
}
~Converter()
{
in.close();
out.close();
}
void convert()
{
out << "p";
printKeys();
in.clear();
in.seekg(0, ios::beg);
string field;
char current;
in.get(current);
while (current != ']')
{
if (current == '{')
{
out << '\n';
}
else if (current == ':')
{
in.get(current);
while (!isalnum(current) && current != '"')
in.get(current);
if (current == '"')
readTextValue(field);
else
readNumberValue(current, field);
out << field << ",";
field.clear();
}
in.get(current);
}
}
};
int main()
{
Converter c("convertor.in", "convertor.out");
c.convert();
}