Próbuje zrobić tak aby z pliku mi odczytało i potem zapisało z powrotem w skróconej wersji. Potrzebuje id który zwiększa się o 1 po każdej lini, idp i lvl ktore są z lini wczytanej z pliku. Chce je zapisać tak id; idp; lvl. I tak wygląda kod tylko że przy lvl wypisuje mi niepoprawne wartości:
#include<iostream>
#include<fstream>
#include<cctype>
using namespace std;
fstream tabela;
string dana;
int id, idp, lvl;
void open()
{
if(tabela.good()==true) cout<<"Uzyskano dostep do pliku!"<<endl;
else cout<<"Dostep do pliku zostal zabroniony!"<<endl;
}
int del(string dana)
{
idp=0;
idp=(dana[0]-'0')*100+((dana[1]-'0')*10)+(dana[2]-'0');
if(dana.size()!='-' || dana.size()!='\'')
{
lvl=dana[dana.size()-1]*10;
lvl+=dana[dana.size()];
}
else
{
lvl=101;
}
return idp,lvl;
}
int main()
{
string zapis;
tabela.open( "tabela.txt", ios::in | ios::out);
open();
id=0;
while(!tabela.eof())
{
getline(tabela, dana);
del(dana);
cout<<id<<" "<<idp<<" "<<lvl-'0'<<" "<<endl;
zapis=id+'0';
zapis+="; ";
zapis+=idp+'0';
zapis+="; ";
zapis+=lvl+'0';
//tabela>>zapis;
id++;
}
}
Plik z którego czytam wygląda tak:
043 test1 t -- -- -- -- -- --
044 -- -- -- -- -- --
045 -- -- '
114 29 27 10 10 8 8 10 10
140 34 10 13 6 6 6
141 --, 34 --, 10 --, 13 --, 6 --, 6 --, 6
182 -- -- '
191 -- -- -- -- --
Idp biore z 3 pierwszych znaków, lvl z 1/2 ostatnim znaków jeśli ostatni znak nie jest cyfrą to ma wpisać 101. Wie ktoś czemu to nie działa