Cod sursa(job #1358662)

Utilizator AndlolAndrei Apostoiu Andlol Data 24 februarie 2015 18:55:44
Problema Convertor Scor 0
Compilator cpp Status done
Runda rosedu_cdl_2015 Marime 1.4 kb
#include <string>
#include <fstream>
#include <iostream>
using namespace std;

class JSONConvertor {
public:
	void convert() {
		ifstream in;
		ofstream out;
		string buffer;
		int begin, end, cnt, aux;

		in.open("convertor.in2");
		out.open("convertor.out");

		getline(in, buffer, '{');
		getline(in, buffer, '}');
		
		cnt = 0;
		while (true) {
			begin = buffer.find_first_of("\"", cnt);
			end = buffer.find_first_of("\"", begin + 1);

			out << buffer.substr(begin + 1, end - begin - 1) << ",";

			cnt = buffer.find_first_of(",", cnt + 1);

			if (cnt == string::npos) {
				out << endl;
				break;
			}
		}

		while (true) {
			while (true) {
				begin = buffer.find_first_of(":");
				if (begin == string::npos) {
					out << endl;
					break;
				}

				begin = buffer.find_first_not_of(" \f\n\r\t\v", begin + 1);
				if (buffer.at(begin) == '\"') {
					begin++;
				}

				end = buffer.find_first_of(",", begin + 1);			
				end = buffer.find_last_not_of(" \f\n\r\t\v", end - 1);
				if (buffer.at(end) == '\"') {
					end--;
				}

				out << buffer.substr(begin, end - begin + 1) << ",";

				buffer = buffer.substr(begin);
				cout << buffer << "===" << endl;
			}

			getline(in, buffer, '}');
			if (buffer.find_first_of(",") == string::npos) {
				break;
			}
		} ;

		in.close();
		out.close();
	}
};

int main(int argc, char* argv[]) {
	JSONConvertor myJSONConvertor;
	myJSONConvertor.convert();

	return 0;
}