Problem med løkke

Tags:    c++

Jeg er igang med at læse Accelerated C++, og i den forbindelse prøver jeg på selv at lave et program, der bruger en vector og som også benytter sig af sort-algorithmen.
Der er dog en fejl i linien while(std::cin >> s), som jeg ikke selv kan finde:

Fold kodeboks ind/udKode 


Jeg har efterhånden læst en del sider, og jeg vil lige afslutte med at anbefale bogen til alle, der enten vil starte på C++ eller har programmeret i det i længere tid: den præsenterer materialet på en interessant måde, der gør indlæringen lettere og hurtigt sætter en i gang med at lave brugbare programmer.



7 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Det letteste er at læse ind i en midlertidig variabel:

Fold kodeboks ind/udKode 





Det letteste er at læse ind i en midlertidig variabel:

Fold kodeboks ind/udKode 



Tak for det hurtige og gode svar. Men er det ikke muligt at gøre det uden at oprette en midlertidig variabel?

Og jeg går udfra, at du ikke kan lokkes til at modtage point..




Det letteste er at læse ind i en midlertidig variabel:

Fold kodeboks ind/udKode 



Tak for det hurtige og gode svar. Men er det ikke muligt at gøre det uden at oprette en midlertidig variabel?

Og jeg går udfra, at du ikke kan lokkes til at modtage point..


Nå ja, lige ét spørgsmål mere:

Hvor venter std::cin.get(); ikke på et tastetryk, som det skulle? Jeg vil gerne bruge det i stedet for system("PAUSE");, så jeg ikke skal include en gang til for at følge standarden.




Det letteste er at læse ind i en midlertidig variabel:

Fold kodeboks ind/udKode 



Tak for det hurtige og gode svar. Men er det ikke muligt at gøre det uden at oprette en midlertidig variabel?

Og jeg går udfra, at du ikke kan lokkes til at modtage point..


Tjo, det kan du da godt...


Fold kodeboks ind/udKode 


1101110100010110000101000001

Killers don't end up in jail - they end up on a high-score!

[Redigeret d. 20/02-06 22:48:40 af Nicolai Lyster Fersner]



Det letteste er at læse ind i en midlertidig variabel:

Fold kodeboks ind/udKode 



Tak for det hurtige og gode svar. Men er det ikke muligt at gøre det uden at oprette en midlertidig variabel?

Og jeg går udfra, at du ikke kan lokkes til at modtage point..


Tjo, det kan du da godt...


Fold kodeboks ind/udKode 


1101110100010110000101000001

Killers don't end up in jail - they end up on a high-score!

[Redigeret d. 20/02-06 22:48:40 af Nicolai Lyster Fersner]


Hm, jeg tror bare jeg vælger en midlertidig variabel, det ser ud til at være en hel del lettere :)




Nå ja, lige ét spørgsmål mere:

Hvor venter std::cin.get(); ikke på et tastetryk, som det skulle? Jeg vil gerne bruge det i stedet for system("PAUSE");, så jeg ikke skal include en gang til for at følge standarden.


Hvis du har to std::cin.get() lige efter hinanden, og brugeren trykker et tegn og derpå enter, vil den første læse tegnet og den anden enter, og vil dermed ikke vente på enter (for den er allerede i bufferen).
Det samme vil ske med:
int i;
std::cin >> i;
std::cin.get();

Dette problem kan løses med:
int i;
std::cin >> i;
std::cin.ignore(1024, '\\n');
std::cin.get();

Eller bedre at bruge std::getline med en std::string til alle indlæsninger.



Hm, jeg tror bare jeg vælger en midlertidig variabel, det ser ud til at være en hel del lettere :)


For simple typer er det lettere med en midlertidig variabel, men Nicolais trick kan være handy for meget store data typer, for her undgår du en kopiering.



t