[ djovanovski @ 02.11.2006. 12:23 ] @
trebam da napravim program koji ce da cita text file i citajuci liniju po liniju da radi odredjene operacije. e sada muka mi je jer ne znam kako da napravim da program cita liniju pa da izbaci kao output i kako posle da das instrukciju programu da ide na sledeculiniju. e sad u znam ja da otvorim program i procitam ceo fajl ali ne znam bre ovo sa odredjenim brojem linija.


pomozite
[ karas @ 02.11.2006. 12:44 ] @
Code:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    const int line_len = 100;
    ifstream fs("file.txt", ios::in);
    char line[line_len];

    while (!fs.eof())
    {
        fs.getline(line, line_len);
        cout << line << endl;
    }
}


chita red po red iz file.txt i ispisuje na ekran.
[ djovan01 @ 02.11.2006. 14:21 ] @
da ali kako da procita samo jednu liniju i tu stane ? ovo sto si ti napisao ja sam vec uradila.
[ karas @ 02.11.2006. 14:28 ] @
Ukloni petlju ako hoccesh samo jednu liniju ili stavi brojach linija pa break kada uchita odredjen broj linija.
[ djovan01 @ 02.11.2006. 14:42 ] @
izvini ja tebe ne razumem, kao prvo nemam pojma sta je petlja, drugo nikada nisam koristila nikakav brojac linija. Da li mozes da pojasnis?
[ karas @ 02.11.2006. 15:01 ] @
Uklonish while petlju, tj. da bude

Code:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    const int line_len = 100;
    ifstream fs("file.txt", ios::in);
    char line[line_len];

    fs.getline(line, line_len);
    cout << line << endl;
}


ako hoccesh da prochita samo jednu liniju, ispishe je i zavrshi.
Ako hoccesh da prochita odredjen broj linija, onda stavish promenljivu koja broji linije i kada prochita odredjen broj linija izadjesh iz petlje:

Code:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    const int line_len = 100;
    ifstream fs("file.txt", ios::in);
    char line[line_len];

    int counter = 1;
    while (!fs.eof())
    {
        fs.getline(line, line_len);
        cout << line << endl;
        if (counter == 10)// zavrshi kad prochita 10 linija
            break;
    }
}


Ova dva primera nisam isprobao.
[ djovan01 @ 02.11.2006. 15:33 ] @
hvala lepo isprobacu ja to :)
[ karas @ 02.11.2006. 15:37 ] @
Ispravka, brojach nije brojao, ubachena linija sa counter++.

Code:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    const int line_len = 100;
    ifstream fs("file.txt", ios::in);
    char line[line_len];

    int counter = 1;
    while (!fs.eof())
    {
        fs.getline(line, line_len);
        cout << line << endl;
        counter++;
        if (counter == 10)// zavrshi kad prochita 10 linija
            break;
    }
}


Valjda radi sada.:)
[ djovan01 @ 02.11.2006. 18:20 ] @
compile & run sve bez greske sem sto nemam nikakav output. prazan crni promt samo. sta nije u redu? fajl mi je smesten na E:\\text.txt i ubacila sam par linija teksta.
[ djovan01 @ 02.11.2006. 18:39 ] @
aaaaaaaaaaa radi :)))))))) hvala hvala hvala sad idem da izmanipulisem taj string :) ako bude frke eto mene opet
[ djovan01 @ 02.11.2006. 19:43 ] @
evo mene opet. sledece pitanje kako da kada procitam odredjenu linu iz fajla, da tu liniju upisam u drugi kreirani fajl ( recimo outFile.txt) i da se ponovo vratim na sledecu liniju input fajla.

evo sta sam do sada napisala mada treba da dodam jos neke druge funkcije tipa brisanja odredjenog broja slova, zamene string-a i ostalo ali to sad nije bitno.


#include <cstdlib>
#include <fstream>
#include <string>
#include <iostream>


using namespace std;
using std::string;

int main(int argc, char *argv[])
{


string line;
string str1;

ifstream myfile ("e:\\text.txt");
int i = 1;

if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
cout << line << endl;
cout <<"The length of line 1 is: "<<line.length()<<endl;
cout <<"Please enter string to find position:"<<endl;
cin >>str1;
string::size_type pos = line.find (str1,0);
cout<<"String "<<str1<<"is at position "<<pos<<endl;


i++;

if(i ==2)
break;
}
myfile.close();
}

else cout << "Unable to open file";






system("PAUSE");
return EXIT_SUCCESS;
}
[ karas @ 03.11.2006. 08:42 ] @
Bolje bi ti bilo da si pogledala neku C++ knjigu gde se objasnjava rad sa fajlovima, petljama i ostalim. Ne znam koliko je pametno da sve dobijash gotovo, ali evo:

Code:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    ifstream ifs("infile.txt", ios::in);
    ofstream ofs("outfile.txt", ios::out);
    string line;
    
    while (!ifs.eof())
    {
        getline(ifs, line);
        ofs << line << endl;
    }
}


P.S.
Koristi tagove za kod, da bi prikaz bio lepshi.
[ djovan01 @ 03.11.2006. 16:19 ] @
hvala :) ja imam knjige iz c++ to sto nisam znala sta je petlja jeste sto studiram u inostranstvu i nikada nisam koristila takvu terminologiju, druga stvar zaista ne znam koju knjigu da kupim a da ima objasnjeno sve u detalje. jednom prilikom sam imala zadatak da uradim nesto sa vektorima a u knjizi iz koje ucimo u skoli vektorima je posveceno samo pola stranice bez ikakvih primera, e sada ti meni reci kako ja da saznam ono sto mi treba. naravno moram da pitam, da trazim po netu i zapamtim za sledeci put.
[ karas @ 06.11.2006. 08:25 ] @
Ako kreccesh iz pochetka sa programiranjem (dakle hoccesh u detalje objashnjenja za loops, conditions, itd.) onda uzmi Herb Schildt: C++ Complete reference. Ako vecc imash neke osnove, onda Lippman: C++ Primer. Obe knjige se mogu nacci i u e-formatu. Verovatno ni za jedan jezik nije dovoljna samo jedna knjiga, ali za C++ to najvishe vazzi.