Cześć, napisałem sobie funkcję zamieniającą wczytanie z pliku stringi na inty. Program wczytuje z pliku linię i po jednej liczbie (jedności, dziesiątki, setki itd...) zamienia stringa na inta przez dodawanie właśnie tych liczb podniesionych przez notacje wykładniczą do odpowiedniej potęgi.
Problem polega na tym, że w liczbach o długości powyżej dwóch cyfr program ucina jedności.
Na przykład plik zawiera liczby:
6
66
666
Program wtedy zwraca:
6
66
665
Nie mogę znaleźć przyczyny. Da radę ktoś to rozszyfrować? Z góry dzięki - kod poniżej
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
using namespace std;
int main()
{
fstream plik;
plik.open("test.txt");
string linia;
int l;
do
{
getline(plik,linia);
int n=0;
for(int a=0; a<linia.size(); a++)
{
if(a!=0)
l = l + (linia[linia.size()-1-a]-48)*pow(10,n) ;
else
l = (linia[linia.size()-1-a]-48);
n++;
}
cout << endl;
cout << l << endl;
}while(!plik.eof());
}