2011-01-20 24 views

risposta

18

In caso di char *, std::cin.getline ottenere linea, invece di std::cin ottenere la prima parola.

+6

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. –

+1

'char s1 [256], s2 [256]; std :: cin >> s1; cin.getline (s2, 256); ' – alvelcom

+3

' std :: cin >> s1' è una chiamata a una funzione globale 'istream & operator >> (istream &, char *)' –

9

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.

+3

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

+0

@Oli. Sì, ho visto la documentazione per un po 'ma non ho avuto l'idea. Ora, penso che sia più chiaro. Grazie. – Simplicity

+0

@etarion: buona cattura. Aggiornamento risposta adesso ... –

24

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 
Problemi correlati