Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nieprawidłowe działanie pętli do..while

Ostatnio zmodyfikowano 2013-02-11 07:44
Autor Wiadomość
Nitr0Skay
» 2013-02-10 13:45:08
@Uśmiech
Nie lepiej użyć biblioteki
#include <conio.h>
 i zamiast
system( "pause" );
 użyć
getchar();
 ażeby nie było żadnych warningów ??

Jeżeli nie, to dlaczego ??
P-76084
usmiech
» 2013-02-10 14:23:49
Pewnie to zalezy od kompilatora, ktorego uzywasz. Ja uzywam Visual Studio i system("pause") wstrzymuje debugowanie nie pokazujac zadnych warningow.. Mozna tez zamiast tego napisac w tym miejscu dwukrotnie cin.get(). Nie ma potrzeby dla tych instr uzywac biblioteki conio.h. Efekt ten sam i nie powinienes juz widziec warningow, pozdrawiam :)
P-76089
Monika90
» 2013-02-10 17:41:16
Gdyby metoda sync byłaby bezużyteczna to by nie istniała w standardzie.
Gdyby standard był idealny i nie zawierał błędów, to by nie istniał w rzeczywistości.
Standard nie wymaga od std::cin.sync() żadnego konkretnego zachowania, więc implementacja może zrobić co zechce.
http://en.cppreference.com/w/cpp/io/basic_istream/sync

- std::cin.good() może zwrócić false nawet gdy wczytanie liczby się powiodło, dlatego lepiej używać std::cin.fail()
Masz jakiś przykład? :)

Wyobraź sobie, że wczytujesz liczbę, która jest na samym końcu pliku, a po niej nie ma już nic, nawet białych znaków. W takiej sytuacji po wczytaniu tej liczby good() == false pownieważ eof() == true, ale fail() == false, bo wczytanie się powiodło.
P-76108
krzyk
» 2013-02-11 07:44:07
std::cin.good() może zwrócić false nawet gdy wczytanie liczby się powiodło, dlatego lepiej używać std::cin.fail()
Wielu programistów żle interpretuje metodę
good()
,niesłuży ona do sprawdzenia czy operacja na strumieniu się powiodła tylko czy strumień jest gotowy do następnej operacji.
Cytat z manuala:
Check if the state of the stream is good for i/o operations.
P-76124
1 « 2 »
Poprzednia strona Strona 2 z 2