Ce face std::istream::ignore
ignore(n, delim) aruncă cel mult n caractere din intrare, oprindu-se după primul delim întâlnit (care este și el aruncat). Fără argumente, sare peste un singur caracter.
Forma ignore(std::numeric_limits<std::streamsize>::max(), '\n') înseamnă „aruncă tot până la sfârșitul rândului, oricât de lung ar fi”. Se folosește după std::cin >> x, înainte de std::getline, sau după o citire greșită, ca să scapi de restul rândului.
Parametri
| Parametru | Descriere |
|---|---|
n |
Numărul maxim de caractere de aruncat. |
delimitator |
Caracterul la care se oprește (inclusiv). Implicit nu există. |
Ce returnează
Fluxul.
Exemple
Exemplul 1: Citirea unui număr, apoi a unui rând întreg
#include <iostream>
#include <limits>
#include <string>
int main() {
int camera;
std::string nume;
std::cin >> camera;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, nume);
std::cout << "Camera " << camera << ": " << nume << '\n';
}
Ce scrie utilizatorul (intrare)
204 (etaj 2)
Ana Maria Popescu
Rezultat
Camera 204: Ana Maria Popescu
Exemplul 2: Sărirea peste antetul unui CSV
#include <iostream>
#include <limits>
#include <sstream>
#include <string>
int main() {
std::istringstream csv("produs,pret\npaine,4.5\nlapte,7.99\n");
csv.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // primul rând
std::string rand;
while (std::getline(csv, rand)) {
std::cout << rand << '\n';
}
}
Rezultat
paine,4.5
lapte,7.99
Exemplul 3: Sărirea peste câteva caractere
#include <iostream>
#include <sstream>
int main() {
std::istringstream data("19.10.2026");
int zi, luna, an;
data >> zi;
data.ignore(); // punctul
data >> luna;
data.ignore(1); // al doilea punct
data >> an;
std::cout << "Zi " << zi << ", luna " << luna << ", anul " << an << '\n';
}
Rezultat
Zi 19, luna 10, anul 2026
Greșeli frecvente
- Scrii
std::cin.ignore()fără argumente și crezi că ai golit rândul: aruncă un singur caracter. Dacă după număr erau spații,getlinecitește tot restul. - Uiți
#include <limits>pentrustd::numeric_limits.
Comenzi înrudite
std::getline: Citește un rând întreg, cu spații cu tot, într-un std::string.std::cin: Citește valori de la tastatură în variabile, cu operatorul >>.std::istream::peek: Arată următorul caracter din intrare fără să-l consume.std::istream::get: Citește un singur caracter, inclusiv spații și rânduri noi; put scrie un caracter.