#include <sstream>
#include <string>
#include <iostream>
using namespace std;
char readUntilCharInLine(istream& is, char untilChar, string& result)
{
typedef istream::traits_type Traits;
Traits::int_type i;
while(is && (i = is.get()) != Traits::eof())
{
char c = Traits::to_char_type(i);
if(c == untilChar || c == '\n')
return c;
result += c;
}
return 0;
}
string convert(string input)
{
istringstream is(input);
string result;
while(is)
{
readUntilCharInLine(is, ',', result);
result += ';';
readUntilCharInLine(is, ',', result);
result += ';';
readUntilCharInLine(is, '.', result);
result += ',';
readUntilCharInLine(is, ',', result);
result += ';';
readUntilCharInLine(is, '.', result);
result += ',';
readUntilCharInLine(is, '\n', result);
result += '\n';
}
return result;
}
int main()
{
std::cout << convert("27.09.2012,15:30:17,12.562,3.231\n"
"27.09.2012,15:30:17,12.125,3.144\n"
"27.09.2012,15:30:17,12.767,3.145\n"
"27.09.2012,15:30:18,12.660,3.260");
}
I2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjaGFyIHJlYWRVbnRpbENoYXJJbkxpbmUoaXN0cmVhbSYgaXMsIGNoYXIgdW50aWxDaGFyLCBzdHJpbmcmIHJlc3VsdCkKewogICAgdHlwZWRlZiBpc3RyZWFtOjp0cmFpdHNfdHlwZSBUcmFpdHM7CiAgICBUcmFpdHM6OmludF90eXBlIGk7CgogICAgd2hpbGUoaXMgJiYgKGkgPSBpcy5nZXQoKSkgIT0gVHJhaXRzOjplb2YoKSkKICAgIHsKICAgICAgICBjaGFyIGMgPSBUcmFpdHM6OnRvX2NoYXJfdHlwZShpKTsKICAgICAgICBpZihjID09IHVudGlsQ2hhciB8fCBjID09ICdcbicpCiAgICAgICAgICAgIHJldHVybiBjOwogICAgICAgIHJlc3VsdCArPSBjOwogICAgfQoKICAgIHJldHVybiAwOyAgIAp9CgpzdHJpbmcgY29udmVydChzdHJpbmcgaW5wdXQpCnsKICAgIGlzdHJpbmdzdHJlYW0gaXMoaW5wdXQpOwogICAgc3RyaW5nIHJlc3VsdDsKCiAgICB3aGlsZShpcykKICAgIHsKICAgICAgICByZWFkVW50aWxDaGFySW5MaW5lKGlzLCAnLCcsIHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9ICc7JzsKCiAgICAgICAgcmVhZFVudGlsQ2hhckluTGluZShpcywgJywnLCByZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSAnOyc7CgogICAgICAgIHJlYWRVbnRpbENoYXJJbkxpbmUoaXMsICcuJywgcmVzdWx0KTsKICAgICAgICByZXN1bHQgKz0gJywnOwoKICAgICAgICByZWFkVW50aWxDaGFySW5MaW5lKGlzLCAnLCcsIHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9ICc7JzsKCiAgICAgICAgcmVhZFVudGlsQ2hhckluTGluZShpcywgJy4nLCByZXN1bHQpOwogICAgICAgIHJlc3VsdCArPSAnLCc7CgogICAgICAgIHJlYWRVbnRpbENoYXJJbkxpbmUoaXMsICdcbicsIHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ICs9ICdcbic7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgY29udmVydCgiMjcuMDkuMjAxMiwxNTozMDoxNywxMi41NjIsMy4yMzFcbiIKIjI3LjA5LjIwMTIsMTU6MzA6MTcsMTIuMTI1LDMuMTQ0XG4iCiIyNy4wOS4yMDEyLDE1OjMwOjE3LDEyLjc2NywzLjE0NVxuIgoiMjcuMDkuMjAxMiwxNTozMDoxOCwxMi42NjAsMy4yNjAiKTsKfQ==