Oppure

Loading
27/09/09 18:08
Hast
Ciao ragazzi sono nuovo a questo linguaggio di programmazione, fino ad ora ho programmato in c#. Sono ancora agli inizi, sto studiando dal libro C++ di Bjarne Stroustrup.

Ecco il mio problema: quando cerco di fare un programmino anche stupido come un Hello world se scrivo:
cout<<"hello world" << endl;

Mi stampa "hello world" però non aspetta che il mio invio per chiudere il programma. Allora ho provato a importare il <cstdio> e con getchar() funziona. Quando però provo a chiedere e importare dati usando il cin, smette di funzionare anche getchar...
Sapreste aiutarmi? (sicuramente sì :))
aaa
27/09/09 18:19
theprogrammer
1) che ambiente/compilatore usi ?

2) spiega nuovamente il problema, preferibilmente con il codice che ti da' problemi
aaa
27/09/09 18:35
Francesco88
per usare il cin devi includere <iostream> ed importare il namespace std.
;)
aaa
27/09/09 18:39
theprogrammer
Postato originariamente da Francesco88:

per usare il cin devi includere <iostream> ed importare il namespace std.
;)


Ha scritto

"Mi stampa "hello world" però non aspetta che il mio invio per chiudere il programma. "

quindi non ha problemi di compilazione ...
aaa
27/09/09 18:40
munkaka
Mi sembra che bisogna pulire il buffer o qualcosa del genere
devi mettere stdin(fflush) (o fflush(stdin) non mi ricordo bene) prima di getchar
aaa
27/09/09 18:47
Hast
Ho usato sia dev-cpp, sia visual c++ che qtcreator.
Ti do l'esempio fatto con dev cpp:
#include <iostream>
using namespace std;
main()
{
      cout<<"hello world"<<endl;
}

lo eseguo e mi stampa hello world. Non aspetta però che io dia invio per chiudere il programma. E' come se il mio endl non ci fosse.

Se uso questo codice funziona tutto:
#include <iostream>
#include <cstdio>
using namespace std;
main()
{
      cout<<"hello world";
      getchar();
}


Se invece uso questo:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
main()
{
      string a;
      cout<<"come ti chiami?";
      cin>>a;
      getchar();
}


Ignora il mio getchar(); e chiude il programma come se niente fosse. Quello che voglio fare io è quello che in .NET sarebbe un bel Console.ReadKey() prima della fine del programma
aaa
27/09/09 19:20
theprogrammer
Postato originariamente da Hast:
lo eseguo e mi stampa hello world. Non aspetta però che io dia invio per chiudere il programma. E' come se il mio endl non ci fosse.


Forse ti stai confondendo ma l' endl non serve ad attendere un input.

Serve solamente a far andare a capo il cursore dopo aver visualizzato la stringa.

Se uso questo codice funziona tutto:


Ovviamente ... c'e' il getchar ...

Se invece uso questo:


E' l'effetto del buffering del cin.

Puoi risolvere inserendo un altro getchar, cioe'

getchar();
getchar();

oppure togli i getchar e inserisci un

system("PAUSE";)

se lavori con Windows.

In alternativa, con Visual Studio, esegui il programma con Ctrl-F5 al posto del solo F5
aaa
27/09/09 19:52
Hast
Postato originariamente da theprogrammer:
E' l'effetto del buffering del cin.

Puoi risolvere inserendo un altro getchar, cioe'

getchar();
getchar();


Grazie mille ora funziona! Come mai succede questo?
aaa