Pagini recente » Cod sursa (job #2073099) | Cod sursa (job #3202568) | Cod sursa (job #703244) | Cod sursa (job #3186887) | Cod sursa (job #1361719)
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
void read_all_lines_from_file(std::string filename, std::string& result) {
std::ifstream f(filename.c_str());
if(f.is_open()) {
std::string line;
result.erase();
while(std::getline(f, line)) {
result += line;
}
} else {
std::cout << "Failed to open file\n";
throw errno;
}
f.close();
}
int main ( void ) {
std::string buffer;
read_all_lines_from_file("convertor.in", buffer);
std::stringstream f(buffer);
std::ofstream g("convertor.out");
if( !g.is_open() ) {
std::cout << "Failed to open the file." << std::endl;
throw errno;
}
std::string entry;
std::getline(f, entry, '}');
size_t pos = 0;
size_t next_quote;
while((next_quote = entry.find('"',pos)) != std::string::npos) {
size_t start = entry.find('"', pos);
size_t end = entry.find('"', start+1);
g << entry.substr(start + 1, end - start - 1) << ",";
pos = entry.find(',', end+1);
}
g << std::endl;
f.seekg(0, f.beg);
pos = 0;
while(std::getline(f, entry, '}')) {
size_t pos = 0;
size_t next_quote;
while((next_quote = entry.find('"',pos)) != std::string::npos) {
pos = entry.find('"', pos);
pos = entry.find('"', pos+1);
pos = entry.find(":",pos+1);
size_t start = entry.find_first_not_of(" ", pos+1);
size_t end;
if(entry[start] == '"') {
end = entry.find('"', start+1);
} else {
end = std::min(entry.length(), entry.find_first_not_of("0123456789", start));
start--;
}
g << entry.substr(start + 1, end - start - 1) << ",";
pos = end + 1;
}
g << std::endl;
}
g.close();
return 0;
}