 |
Coders' city Nasza pasja to programowanie!
|
| Zobacz poprzedni temat :: Zobacz następny temat |
| Autor |
Wiadomość |
PoQsa Gość
|
Wysłany: Nie Gru 28, 2008 4:14 pm Temat postu: [C++] cin.ignore, cin.getline |
|
|
Witam! Mam kilka pytań dt c++. Z tym programem mam do czynienia od dwóch miesięcy i mało na razie wiem... Nie mogę znaleźć w swojej książce dwóch rzeczy:
- co oznacza komenda cin.ignore(); bez zadnych parametrow w nawiasach - co tak naprawde robi cin.getline(a,b);
Będę wdzięczna za wyjaśnienie:) Pozdrawiam! |
|
| Powrót do góry |
|
 |
|
|
Kanguro
Dołączył: 04 Lis 2008 Posty: 235
|
Wysłany: Nie Gru 28, 2008 4:42 pm Temat postu: |
|
|
Widać, że początkująca, bo C++ to przecież nie program, tylko język programowania : )).
Bardzo przydatna strona dotycząca biblioteki standardowej IOStreams, tak na przyszłość: http://www.cplusplus.com/
A co do Twoich pytań, nie udzielę Ci odpowiedzi na pierwsze bo nie jestem pewien odpowiedzi, a lepiej nie mówić nic niż niepewne informacje.
cin.getline(a, b) służy do pobierania określonej przez b liczby znaków ze standardowego wejścia i umieszczaniu ich w tablicy char'ów a. Od "zwykłego" sposobu pobierania danych:
| Kod: |  cin >> a
|
różni się tym, że tutaj pobieramy określoną ilość znaków oraz pobieramy tzw. białe znaki (tabulator, spacja). |
|
| Powrót do góry |
|
 |
Gribo
Dołączył: 01 Cze 2008 Posty: 4
|
Wysłany: Nie Gru 28, 2008 4:47 pm Temat postu: |
|
|
Cin.ignore to funkcja która ignoruje wszystkie znaki, dopóki nie napotka znaku podanego w argumencie tej funkcji.
Poszukaj jej specyfikacje w internecie powinno dać ci to pełna informacje. |
|
| Powrót do góry |
|
 |
PoQsa Gość
|
Wysłany: Nie Gru 28, 2008 4:57 pm Temat postu: |
|
|
dziękuję bardzo za pomoc!:)
ech z tym programem to takie przejęzyczenie;) |
|
| Powrót do góry |
|
 |
szczerb
Dołączył: 08 Mar 2008 Posty: 242 Skąd: Łódź
|
|
| Powrót do góry |
|
 |
PoQsa Gość
|
Wysłany: Nie Gru 28, 2008 8:18 pm Temat postu: |
|
|
| to by miało sens...:) |
|
| Powrót do góry |
|
 |
marcin_an Site Admin
Dołączył: 26 Maj 2005 Posty: 17273 Skąd: z drugiej strony Kabla
|
Wysłany: Nie Gru 28, 2008 8:51 pm Temat postu: |
|
|
Nie za bardzo w obydwu przypadkach...
Odnośnik podany przez szczerba dosyć dokładnie to opisuje. Gdybyś chciała na polski:
istream::ignore(n, e) pobiera i wyrzuca co najwyżej n znaków lub wszystkie znaki do napotkania e - którekolwiek nastąpi wcześniej. Oprócz tego przestaje czytać w przypadku wystąpienia końca strumienia lub błędu odczytu. Domyślne wartości n i e to odpowiednio 1 i EOF. Czyli wywołania: | Kod: |  cin.ignore();
 cin.ignore(10);
 cin.ignore(10, 'a');
|
"ignorują" odpowiednio na standardowym wejściu:- 1 znak.
- 10 znaków lub mniej, jeśli EOF wystąpi wcześniej.
- 10 znaków lub mniej, jeśli 'a' wystąpi wcześniej.
Oprócz tego istnieje specjalna wartość n równa maksymalnej wartości streamsize, która powoduje ignorowanie wszystkich znaków aż do napotkania e (niezależnie od ich ilości).
istream::getline(s, n, d) pobiera ciąg znaków i zapisuje go do ciągu char wskazanego przez s. Wczytywanie kończy albo po wczytaniu n-1 znaków, albo napotkaniu d (którekolwiek nastąpi wcześniej). Błąd odczytu lub koniec danych oczywiście również powoduje zakończenie odczytu. Domyślną wartością dla d jest '\n'. Przykładowo: | Kod: |  char data[20];
 cin.getline(data, 20);
 cin.getline(data, 4);
 cin.getline(data, 10, 'a');
|
Wczytują odpowiednio:- 20 znaków lub mniej, jeśli natrafi na znak nowej linii.
- 4 znaki lub mniej, jeśli natrafi na znak nowej linii.
- 10 znaków lub mniej, jeśli natrafi na 'a'.
W powyższym kodzie tablica podana w celu uproszczenia zapisu. _________________ Matematyka to taki twór, który pozwala opisać sokowirówkę jako urządzenie pobierające ujemne odpadki i produkujące z nich sok. "Lameria atakuje" | RTFM | UMLet - edytor UML inaczej | Wykłady ks.Pawlukiewicza |
|
| Powrót do góry |
|
 |
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Możesz dodawać załączniki na tym forum Możesz pobierać pliki z tego forum
|
 Debug: strone wygenerowano w 0.09096 sekund, zapytan = 9
|