Pagini recente » Cod sursa (job #1190173) | Cod sursa (job #1879241) | Cod sursa (job #2664567) | Cod sursa (job #867754) | Cod sursa (job #1338461)
#include <string>
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
ifstream in("convertor.in");
ofstream out("convertor.out");
vector<string> keys;
string *raw_json;
int getHeaders()
{
int key=0;
string *temp = new string;
bool read=false;
size_t start=0,end=0;
for(size_t i=0; i<raw_json->length(); i++)
{
switch(raw_json->at(i))
{
case '{':
case ',':
while(raw_json->at(i+1)==' ' || raw_json->at(i+1)=='\n') i++;
start = i+1;
break;
case '}':
return 1;
case ':':
end = i;
*temp=raw_json->substr(start,end-start);
while(temp->at(temp->length()-1)==' ' || temp->at(temp->length()-1)=='\n' || temp->at(temp->length()-1)=='"')
temp->erase(temp->length()-1,1);
if(temp->at(0)=='"')
temp->erase(0,1);
keys.push_back(*temp);
start=0;
end=0;
case ' ':
case '\n':
case '\r':
break;
}
}
return 0;
}
int getCSV()
{
for(size_t i=0; i< raw_json->length(); i++)
{
switch(raw_json->at(i))
{
case ':':
i++;
while(raw_json->at(i)==' ' || raw_json->at(i)=='\r' || raw_json->at(i)=='\n') i++;
if(raw_json->at(i)=='"')
{
i++;
while(raw_json->at(i)!='"')
{
out << raw_json->at(i++);
}
out << ',';
}
else
{
while(raw_json->at(i)!=',' && raw_json->at(i)!='}' && raw_json->at(i)!=' ' && raw_json->at(i)!='\n'
&& raw_json->at(i)!='\r')
{
out << raw_json->at(i++);
}
out << ',';
if(raw_json->at(i)=='}')
out << '\n';
}
break;
case '}':
out << '\n';
break;
case '[':
case ']':
case ' ':
case '{':
break;
}
}
return 0;
}
void readRaw() //read file;
{
ifstream raw("convertor.in");
raw.seekg (0, raw.end);
int file_length = raw.tellg();
raw.seekg (0, raw.beg);
char *buffer = new char [file_length];
raw.read(buffer,file_length);
raw_json = new string(buffer);
delete[] buffer;
raw.close();
}
int main()
{
readRaw();
getHeaders();
for(size_t i=0; i<keys.size(); i++)
out<<keys[i]<<',';
out << '\n';
getCSV();
out.close();
return 0;
}