Quando deve essere utilizzato std::cin.getline()
? Cosa differisce da std::cin
?std :: cin.getline() vs. std :: cin
risposta
In caso di char *, std::cin.getline
ottenere linea, invece di std::cin
ottenere la prima parola.
Hai letto tutta la documentazione (ad esempio http://www.cplusplus.com/reference/string/getline/)?
Fondamentalmente, std::cin
(o più in generale, qualsiasi std::istream
) viene utilizzato direttamente per ottenere ingresso formattato, ad esempio int x; std::cin >> x;
. std::cin.getline()
viene utilizzato semplicemente per riempire un buffer char *
crudo.
il membro getline non ottiene un 'std :: string', è utilizzato per il riempimento di un buffer' char * '. La linea che ti dà un 'std :: string' è la funzione gratuita' std :: getline'. – etarion
@Oli. Sì, ho visto la documentazione per un po 'ma non ho avuto l'idea. Ora, penso che sia più chiaro. Grazie. – Simplicity
@etarion: buona cattura. Aggiornamento risposta adesso ... –
Prendiamo a parte std::cin.getline()
. Innanzitutto, c'è std::
. Questo è lo spazio dei nomi in cui vive la libreria standard. Ha centinaia di tipi, funzioni e oggetti.
std::cin
è un tale oggetto. È l'oggetto di immissione carattere standard, definito in <iostream>
. Ha alcuni metodi a parte, ma puoi anche usarlo con molte funzioni gratuite. La maggior parte di questi metodi e funzioni sono modi per ottenere uno o più caratteri dallo standard input.
Infine, .getline()
è uno di questi metodi di std::cin
(e altri oggetti simili). Puoi dire quanti caratteri dovrebbe avere dall'oggetto sul lato sinistro (std::cin
qui) e dove mettere quei caratteri. Il numero preciso di caratteri può variare: .getline()
si interrompe in tre casi: 1. La fine di una linea viene raggiunta 2. Non ci sono caratteri rimasti nell'input (non accade normalmente su std::cin
come puoi continuare a digitare) 3. Viene letto il numero massimo di caratteri.
Esistono altri metodi e funzioni che possono essere utilizzati con l'oggetto std::cin
, ad es.
std::string s;
int i;
std::cin >> s; // Read a single word from std::cin
std::cin >> i; // Read a single number from std::cin
std::getline(std::cin, s); // Read an entire line (up to \n) from std::cin
std::cin.ignore(100); // Ignore the next 100 characters of std::cin
- 1. Differenza: cin.getline() e getline (cin, st)
- 2. std :: unique_ptr vs std :: auto_ptr vs std :: weak_ptr vs std :: auto_ptr vs puntatori grezzi
- 3. std :: mem_fun vs std :: mem_fn
- 4. Ignorando/saltare i token utilizzando std :: cin
- 5. std :: unique_ptr :: release() vs std :: move()
- 6. std :: list vs std :: vector iteration
- 7. prestazioni std :: strstr vs. std :: string :: trovare
- 8. Differenza di using namespace (std :: :: vs std: :)
- 9. std :: this_thread :: yield() vs std :: this_thread :: sleep_for()?
- 10. std :: size_t vs size_t vs std :: string :: size_type
- 11. printf vs. std :: cout
- 12. La lettura di una password da std :: cin
- 13. Come gestire l'evoluto C++ std :: namespace? es: std :: tr1 :: shared_ptr vs. std :: shared_ptr vs boost :: shared_ptr vs boost :: tr1 :: shared_ptr
- 14. gettare nuova std :: eccezione vs tiro std :: eccezione
- 15. Quando dovrei implementare std :: convert :: From vs std :: convert :: Into?
- 16. std :: thread class vs std :: this_thread namespace in C++?
- 17. std :: shared_ptr: reset() vs. assegnazione
- 18. Barton-Nackman vs std :: enable_if
- 19. :: tolower vs differenza std :: tolower
- 20. std :: vector vs normal array
- 21. std :: atomico | compare_exchange_weak vs. compare_exchange_strong
- 22. std :: wcstok in VS 2015
- 23. getchar_unlocked() VS scanf() VS cin
- 24. std :: auto_ptr a std :: unique_ptr
- 25. std :: any by std :: exception_ptr
- 26. std :: back_inserter per std :: set?
- 27. std :: bind to std :: function?
- 28. std :: make_shared con std :: initializer_list
- 29. Inizializzazione diretta vs uniforme in std :: allocator
- 30. std :: array di vs prestazioni dell'array
Non capisco questa risposta. 'std :: cin' non ottiene nulla; è solo un oggetto. Devi fare qualcosa con esso (ad es. Chiamare una funzione membro come 'get') prima che faccia qualcosa. –
'char s1 [256], s2 [256]; std :: cin >> s1; cin.getline (s2, 256); ' – alvelcom
' std :: cin >> s1' è una chiamata a una funzione globale 'istream & operator >> (istream &, char *)' –