Jak używając funkcji ignore() z konkretnej lini pliku do odczytu
odczytać znaki pomijając np char ';' ?
Metoda ignore
służy do pomijania znaków z bufora strumienia, a nie do odczytu.
Do odczytu może służyć np. metoda get
i np. instrukcją warunkową sprawdź jaki aktualnie masz znak odczytywany. Zareaguj na niego.
https://en.cppreference.com/w/cpp/io/basic_istream/ignore
ignore nie odczytuje znaków pomijając określony znak, lecz ignoruje znaki dopóki nie napotka tego określonego znaku,
mając dane: alamakota
, jeżeli wywołasz file.ignore(256, 'm');
a później file >> data;
to w data będzie akota
.
Wzorcowy przykład problemu XY
au7h napisał(a):
ignore nie odczytuje znaków pomijając określony znak, lecz ignoruje znaki dopóki nie napotka tego określonego znaku,
mając dane:alamakota
, jeżeli wywołaszfile.ignore(256, 'm');
a późniejfile >> data;
to w data będzieakota
.
Przepraszam za złe sformułowanie, ale o to mi chodziło
MarekR22 napisał(a):
Wzorcowy przykład problemu XY
To w takim razie, w jaki znany ci sposób można z konkretnej linijki odczytać całą linię np. 1;2;3;4;5 , aby program wyświetlił 1 2 3 4 5 ?
Użyć std::getline
. Ta funkcja też ma trzeci argument. Ustawiasz tam delim i odczytujesz tylko do określonego znaku.
https://en.cppreference.com/w/cpp/string/basic_string/getline
{
std::string s;
while (std::getline(std::cin, s, ';')) {
std::cout << s << ' ';
}
}
YooSy napisał(a):
Dziękuję