Witam. Doszedłem wczoraj do filmiku o operacjach na plikach i chciałem zmodyfikować delikatnie kod napisany przez Pana Mirosława. Otóż program ma działać na takiej zasadzie, że pobiera linie z pliku tekstowego. Jeśli prawdą jest, że linia składa się tylko z cyfr, to konwertuj na typ int, w przeciwnym wypadku nie zmieniaj typu i zachowaj stringiem. Zrobiłem coś takiego:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int main()
{
string linia;
string literki[100];
int liczby[100];
int dlugosc;
fstream file;
file.open("abc.txt", ios::in);
if(file.good()==false)
{
cout << "Nie mozna otworzyc pliku!";
}
int licznik=0;
while(!file.eof())
{
getline(file, linia);
dlugosc=linia.length();
for (int i=0; i<=linia[dlugosc-1]; i++)
{
if(linia[i]=='0' || linia[i]=='1' || linia[i]=='2' ||
linia[i]=='3' || linia[i]=='4' || linia[i]=='5' ||
linia[i]=='6' || linia[i]=='7' || linia[i]=='8' || linia[i]=='9')
{
liczby[licznik]=atoi(linia.c_str());
}
else
{
literki[licznik]=linia;
}
}
licznik++;
}
for (int i=0; i<licznik; i++)
{
cout << liczby[i] << endl << cyfry[i] << endl;
}
file.close();
return 0;
}
W sumie to zorientowałem się, że już ten warunek jest zły, bo konwertuje linie po sprawdzeniu tylko pierwszego znaku lini. Może jakiś kompletnie inny sposób? Z góry dzięki za pomoc. Pozdrawiam.