[ LightBow @ 07.01.2006. 08:24 ] @
nije mi jasno u cemu je greska. Probao sam prvo:

string s;
while(getline(infile2, s)) {stock = atoi(s); i++;}

i kompajler (VS6) trazi treci argument. Medjutim kad dodam "" ili "\t" kao treci argument, onda ocekuje 2 argumenta.
Ako ne verujete, poslacu screenshot :)

[ X Files @ 07.01.2006. 09:23 ] @
Nisam nikada u zivotu koristio getline, ali cini mi se na osnovu Helpa da si
promasio argumente:

http://crasseux.com/books/ctutorial/getline.html
http://www.delorie.com/gnu/docs/glibc/libc_185.html

P.S.

takodje objasni sta si hteo da postignes sa onom petljom, brojacem ...

[Ovu poruku je menjao X Files dana 07.01.2006. u 10:28 GMT+1]
[ tupito @ 07.01.2006. 10:04 ] @
treci argument ti je karakter ('\n')a ti stavljas "\n" to ti je string i tada uvek javlja da su ocekivana dva argumenta!

Code:

getline(cin,s, ' ');




Code:

getline(cin,s, '\n');



inace treba da radi i samo dva argumenta (barem to radi na VS.NET).
p.s. @xfiles ovde se valjda govori o funkciji iz C++, a ne c funkciji.



[Ovu poruku je menjao tupito dana 07.01.2006. u 14:42 GMT+1]
[ LightBow @ 07.01.2006. 20:55 ] @
Da, u pitanju je C++. U pravu si za treci argument, ispravljeno, ali imam jos veci problem sa atoi() funkcijom, tj. kombinacijom getline() i atoi(). Naime getline radi samo ako je drugi parametar string:
Code:
int stock[10];
string s;
while(getline(infile2, s, ' ')) {
     stock[j] = atoi(s);
      j++;}  
      infile2.close();


ali tada nece da kompajlira atoi(s). Kada stavim
Code:
char* s
while(getline(infile2, s, ' ')) {
      stock[j] = atoi(s);
      j++;}

onda ne radi getline(). Zakljucio sam da atoi() trazi char pointer kao parametar, a getline() string. Moj sledeci pokusaj:
Code:
string s;
char *c;
while(getline(infile2, s, ' ')) {
      c = s;
      stock[j] = atoi(c);
       j++;}

prouzrokuje gresku u c = s;
Zasto mogu da stavim npr. c ="bilo koji literal string", a ne mogu c = s iako je s string? Kako da resim ovaj problem?
[ Branimir Maksimovic @ 08.01.2006. 12:52 ] @
Citat:
LightBow: nije mi jasno u cemu je greska. Probao sam prvo:

string s;
while(getline(infile2, s)) {stock = atoi(s); i++;}

i kompajler (VS6) trazi treci argument. Medjutim kad dodam "" ili "\t" kao treci argument, onda ocekuje 2 argumenta.
Ako ne verujete, poslacu screenshot :)


stavi atoi(s.c_str()); zato sto atoi radi sa char* ostalo je ok kolko vidim.

Pozdrav!
[ tupito @ 08.01.2006. 12:59 ] @
U PAZZI string je template klasa iz STL-a to ti nije klasican char* string, on je ustvari array klasa i nama veze sa klasicnim c stringovima ako zelis da ga koristis sa klasicnim stringovima koristi s.c_str() metodu! Drugo ako zelis da kopiras vrednosti dva char* stringa NIKAKO c1 = c2 jer su c1 i c2 pointeri
vec strcpy(c1,c2) (ovo radi "c1=c2" po sadrzajima);

Code:

string s;
char *c;
/*c = s; ovo ni slucajno!*/
/*vec ovako: i sada ce c da ima vrednost koja je u s*/
strcpy(c,s.c_str());
char *c1;
strcpy(c1,c);
/*c1 = c; ovo takodje ni slucajno!*/

while(getline(infile2, s, ' ')) {
      stock[j] = atoi(s.c_str());
       j++;}

[ Dragi Tata @ 08.01.2006. 15:52 ] @
I da dodam - najbolje bi bilo da izbegavaš atoi. Pogledaj ovde neka bolja rešenja
[ LightBow @ 09.01.2006. 02:23 ] @
Problem resen s c_str(). Hvala svima na korisnim odgovorima