Ensimmäisten kokeilujen jälkeen näyttäisi siltä, että tilitiedot saa
c++ -muotoon tällaisella pikku ohjelmalla.
#include <iostream>
#include <fstream>
#include <string>
#include <bits/stdc++.h>
#include <algorithm>
int main()
{
std::fstream newfile;
//std::regex re1( "^(\\d\\d)(\\.)(\\d\\d)(\\.)(\\d\\d\\d\\d)(.*)" );
std::regex re1( "^(\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d)(.*)" );
std::regex re2( "(.*)" );
//std::regex re3( "(.*\\t)(.*\\t)(.*)" );
std::regex re3( "(.*\\t)(.*\\t)(.*)EUR" );
std::smatch match1, match2, match3;
newfile.open("tili_02.teksti",std::ios::in);
if(newfile.is_open() )
{
std::cout << "pöööö" << std::endl;
std::string row1, row2, row3;
double sum_in = 0, sum_out = 0, event_sum;
while(getline(newfile, row1))
{
if(regex_search(row1, match1, re1) == true) // pvm ekalla rivillä
{
if(getline(newfile, row2) && getline(newfile, row3) &&
regex_search(row2, match2, re2) &&
regex_search(row3, match3, re3)
)
{
std::string s11 = match1.str(1);
std::cout << s11 << "\t";
std::string s21 = match2.str(1);
std::cout << s21 << "\t";
std::string s33 = match3.str(3);
s33.erase(remove(s33.begin(), s33.end(), ' ' ), s33.end() );
std::replace(s33.begin(), s33.end(), ',', '.');
event_sum = std::stod(s33);
std::cout << event_sum << std::endl;
if(event_sum > 0)
{ sum_in += event_sum;
}
if(event_sum < 0)
{ sum_out += event_sum;
}
} // if loppuu
} // if loppuu
} // while loppui
newfile.close();
std::cout << "sum_in: " << sum_in << " sum_out: "
<< sum_out << std::endl;
} // if loppui tiedosto saatiin auki
}
Mutta jos haluaa, että Libeoffice calc ymmärtää päivämäärät oikein, ne pitää luultavasti saada johonkin toiseen muotoon, muoto pp.kk.vvvv ei näytä toimivan.
Calcissa on englantilainen kieliasetus, ja joku englantilainen
päivämäärämuoto pitäisi kai valita? Pisteet näyttävät toimivan
desimaalierottimena.
regexin avulla voi pp.kk.vvvv -muotoa muutella tulostuksessa, mutta
mikä olisi kätevin tapa tulostaa päivämäärä niin, että calc
ymmärtäisi sen suoraan. Erottimena on käytetty tabia ja se toiminee.
En ole koskaan onnistunut saamaan tilitietoja suoraan taulukkolaskentaan, vaikka se olisikin ehkä periaatteessa mahdollista: liikaa kieli- ym. asetuksia tms.