Jak używając funkcji ignore() z konkretnej lini pliku do odczytu
odczytać znaki pomijając np char ';' ?
Szybkie pytanie- z odczytu
- Rejestracja: dni
- Ostatnio: dni
- Postów: 68
- Rejestracja: dni
- Ostatnio: dni
- Postów: 472
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 215
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.
- Rejestracja: dni
- Ostatnio: dni
Wzorcowy przykład problemu XY
- Rejestracja: dni
- Ostatnio: dni
- Postów: 68
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 68
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 ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 472
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 << ' ';
}
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 68
YooSy napisał(a):
Dziękuję