[ maxmagnus2 @ 28.09.2004. 04:24 ] @
Zdravo,
potrebno mi je da iz fajla iscitam float brojeve.
Koje funkcije se koriste za ovo?

Ako dobro rezonujem to se radi ovako:
1.otvaranje fajla i citanje reda po reda i ubacivanje u string
2.izdvajanje vise pomocnih stringova (koji su sastavljeni od cifara i zareza )
3.prevodjenje string->float

Radim u VC++ i nije mi bitno koliko toga trba da iscitam po preporuci,
samo da se ne zlopatim sa helpom koji izdaje preeeeevise rezultata...






[ idb @ 28.09.2004. 09:21 ] @
Za vise informacija o tome kako da naucis ono sto te interesuje pogledaj top teme ovog foruma.
online mozes naci totorijale na (samo neki):
http://www.cppreference.com/
http://www.fredosaurus.com/notes-cpp/index.html
http://www.cplusplus.com/
Dok se na snadjes evo ti jedan primer citanja iz fajla mesovitih podataka double i string, pri cemu su podaci razdvojeni blankom.

Test primer fajle "IOcpp.TXT", koju sam ovde koristio izgleda ovako
1.0 2.0 3.0 string1 string2 4.0
5.0 6.0 7.0 string3 string4 8.0
9.0 10.0 11.0 string5 string6 12.0
13.0 14.0 15.0 string7 string8 16.0


Code:

// Windows 2000, Dev-Cpp 4.9.8.9
#include <iostream>    // Input/Output stream class 
#include <sstream>    // Input/output string stream class 
#include <fstream>    // File input/output stream class 
#include <string>        // string class

using namespace std;

int main(int argc, char *argv[]){
    // radi jednostavnosti neka imas nizove:
    double d1[10], d2[10], d3[10], d4[10];    
    string s, ss1[10], ss2[10];
    int i=0;
    ifstream inf("IOcpp.txt");
    istringstream ins;
   while (getline(inf, s)) {
        ins.clear();
        ins.str(s);
        ins>>d1[i]>>d2[i]>>d3[i]>>ss1[i]>>ss2[i]>>d4[i];
        i++;
   }
    inf.close();
    int row=i;

    cout<<"\n*** Kontrolni ispis float nizova ***\n";
    for (int i=0;i<row;i++){
        cout<<d1[i]<<"\t"<<d2[i]<<"\t"<<d3[i]<<"\t"<<d4[i]<<endl;
    }
    cout<<"\n*** Kontrolni ispis string nizova ***\n";
    for (int i=0;i<row;i++){
        cout<<ss1[i]<<"\t"<<ss2[i]<<endl;
    }
    system("PAUSE");    
    return 0;
}

Ali,... ovo ni nece biti dovoljno da naucis C++, ipak ces morati i neku knjigu da procitas.
[ maxmagnus2 @ 29.09.2004. 17:39 ] @
1.A koje bi mi biblioteke trebale
za #include
ako koristim VC++ CString klasu?
2.
Vec sam koristio u kodu (koji sad nadogradjujem )
<iostream.h> pa mi sa prav probleme ako ukljucim <iostream>.
Pitanje: Da li stringovi mogu da se rade i preko <iostream.h> ?
[ idb @ 30.09.2004. 16:05 ] @
1. Ne znam, ne koristim VC++ (i nisam ga koristio), potrazi u helpu
2. <iostream> se koristi zajedno sa using namespace std;,(koriscenje imenskih prostora)
odluci se za jedan od dva nacina koriscenja:
Code:

//stariji nacin
#include <iostream.h>
//noviji nacin
#include <iostream>
using namespace std;

Citat:
Pitanje: Da li stringovi mogu da se rade i preko <iostream.h> ?

kod mene DA (na sledeci nacin):
Code:

//stariji nacin
#include <iostream.h>
std::string s = "moj string";

//noviji nacin (i lepsi)
#include <iostream>
using namespace std;
string s = "moj string";

Proveri sta ce se desiti u VC++,....
[ Dragi Tata @ 30.09.2004. 16:22 ] @
Citat:
idb:odluci se za jedan od dva nacina koriscenja:
Code:

//stariji nacin
#include <iostream.h>
//noviji nacin
#include <iostream>
using namespace std;



MSVC++ 7.x više uopšte ne podržava "stariji način".
[ maxmagnus2 @ 01.10.2004. 12:32 ] @
Hvala,
prevrteo sam nekih 10 (bukvalno)
sajtova koji se bave ovom tematikom i nijedan nema
listing biblioteka koje se koriste,
ali zato imaju gotovo sve ostalo, sto je naravno beskorisno bez hedera.
[ filmil @ 01.10.2004. 12:34 ] @
Citat:
Je li to pravilo?
To je standard. Stara imena sa .h su sačuvana samo zbog kompatibilnosti.
[ maxmagnus2 @ 01.10.2004. 12:34 ] @
Nikad mi ne bi palo na pamet da je
lib bez .h na kraju u stvari noviji.
Je li to pravilo?
[ maxmagnus2 @ 01.10.2004. 14:41 ] @
1.Kako da prevedem objekat klase string
u float/double;
Da budem precizniji, znam da postoje f-je tipa atof ali one uzimaju char
kao argument. Moram li da prevodim string->char (sto nemam predstavu kako bih uradio) ili postoji laksi nacin za ovo?
(string->float)

[ milanche @ 01.10.2004. 14:55 ] @
atof( ) moze da prihvati CString kao ulazni argument, zato sto CString ima
ugradjeno cast-ovanje na tip char*.

Ovo bi trebalo da radi:

float f;
CString str = "4.123";
f = atof(str);

kao i za promenljive tipa double.


[Ovu poruku je menjao milanche dana 01.10.2004. u 19:10 GMT+1]
[ Dragi Tata @ 01.10.2004. 15:22 ] @
Ako si mislio na std::string, a ne CString, onda je najlakše da koristiš boost::lexical_cast.

http://www.boost.org/libs/conversion/lexical_cast.htm

A ako te mrzi da downloaduješ Boost, onda možeš npr (zloupotrebljavam Milančetov kod):

Code:

float f;
string str = "4.123";
f = atof(str.c_str());