[ marko000 @ 27.07.2003. 11:50 ] @
Hmm..imam jedan mali problem oko streamova.Ovih dana sam
isprobavao iste u c++.

Evo koda:


Code:

#include <fstream.h>

int main(){
    
    char buffer[50];
    char* ime=new char[10];
    cin>>ime;
    ifstream file(ime,ios::in);
    int vel=0;
    while(file.get()!=EOF) vel++;
    file.seekg(0);
    file.read(buffer,vel);
    cout<<buffer;
    file.close();
    cout<<endl;
    return 0;
}


problem je u tome sto posle

Code:

while(file.get()!=EOF) vel++;



nece nista da mi ucita u bafer..mislio sam da promeni poziciju pokazivaca
zbog file.get() ali ni pozicioniranje ne pomaze(proveravao sam poziciju sa
file.tellg() )

jednostavno nemogu da provalim u cemu je fora..

postoji resenje da zatvorim datoteku posle kriticne(gore navedene linije)
a zatim ponovo otvorim ali to mi je bas nekako glupavo..

u cemu gresim?
help?

pozdrav,marko...

p.s.da li neko zna za tutoriale koji se bave slicnim problemima..
dakle streamovi i stringovi...
[ leka @ 27.07.2003. 12:00 ] @
Probaj da umesto
Code:

while(file.get()!=EOF) vel++;

staviš
Code:

while (!file.eof()) {
   vel++;
  // neko citanje ili pozicioniranje ovde...
}


ili

Code:

char cSlovo;
while (!file.get(cSlovo)) {
   vel++;
}

Ali naravno to može i bolje da se odradi... :)
[ marko000 @ 27.07.2003. 12:21 ] @
jos kada bi napisao kako.. ;)))
[ leka @ 27.07.2003. 12:51 ] @
Pa ovo gore bi trebalo takodje da radi...

Ako su fajlovi mali, najbolje bi bilo naci velicinu fajla na pocetku, "svuci" ceo fajl u neki veliki string, i onda taj strng obradjivati...
[ idb @ 28.07.2003. 16:37 ] @
Ako sam dobro shvatio, hoces da odstampas sadrzaj fajla na cout.
Sledeci primer to radi a preuzet je sa:

http://www.cplusplus.com/ref/index.html
pa izaberi redom: iostream library =>ifstream => tellg

tamo se nalazi sledeci primer:
// read a file into memory
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;

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

ifstream is;
is.open ("text.txt", ios::binary );

// get length of file:
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);

// allocate memory:
buffer = new char [length];

// read data as a block:
is.read (buffer,length);
is.close();

cout.write (buffer,length);
system("PAUSE");
return 0;
}

Gore pomenuti link ima dosta informacija koje tebe interesuju.
[ alkal @ 29.07.2003. 02:43 ] @
A može i:
Code:

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    ifstream dat ("tekst.txt");
    cout << dat.rdbuf();
}

Pogledaj knjigu "Thinking in C++":
http://mindview.net/Books/DownloadSites