Ugrás a tartalomhoz

extraction operator

A Wikiszótárból, a nyitott szótárból


Főnév

extraction operator (tsz. extraction operators)

  1. (informatika) A >> extrakciós operátor C++-ban egy beépített operátor, amelyet adatbeolvasásra használunk, gyakran az std::cin vagy fájlfolyamok (std::ifstream) esetében.

Használata fájlfolyamokkal (ifstream)

Amikor egy fájlból akarunk adatot olvasni, az ifstream (input file stream) objektumot használjuk, és az extrakciós operátorral (>>) olvashatunk be adatokat.



Alapvető példa – Szövegfájl beolvasása soronként

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream inputFile("adatok.txt"); // Megnyitjuk a fájlt
    std::string sor;

    if (!inputFile) {
        std::cerr << "Hiba: A fájlt nem sikerült megnyitni!\n";
        return 1;
    }

    while (inputFile >> sor) { // Beolvasás szóközökig
        std::cout << sor << std::endl;
    }

    inputFile.close(); // Fájl bezárása
    return 0;
}

Magyarázat: - Az std::ifstream inputFile("adatok.txt"); megnyitja az “adatok.txt” fájlt. - A while (inputFile >> sor) soronként olvas, de szóközöknél elválasztja a szöveget. - A std::cout << sor; kiírja a konzolra a beolvasott adatokat. - A close() metódussal zárjuk a fájlt.



Számok beolvasása fájlból

Ha egy fájlban számokat tárolunk, például:

numbers.txt

12 45 78 33 99

A beolvasás így nézhet ki:

#include <iostream>
#include <fstream>

int main() {
    std::ifstream file("numbers.txt");
    int number;

    if (!file) {
        std::cerr << "Nem sikerült megnyitni a fájlt!\n";
        return 1;
    }

    while (file >> number) { // Számok beolvasása
        std::cout << "Beolvasott szám: " << number << std::endl;
    }

    file.close();
    return 0;
}

Eredmény a konzolon:

Beolvasott szám: 12
Beolvasott szám: 45
Beolvasott szám: 78
Beolvasott szám: 33
Beolvasott szám: 99

A >> operátor automatikusan az adott típusba próbálja beolvasni az adatot.



Beolvasás teljes soronként (getline)

Ha a fájl teljes sorait akarjuk beolvasni, az std::getline függvényt kell használni:

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream file("szoveg.txt");
    std::string line;

    if (!file) {
        std::cerr << "Hiba: Nem sikerült megnyitni a fájlt!\n";
        return 1;
    }

    while (std::getline(file, line)) { // Soronkénti beolvasás
        std::cout << line << std::endl;
    }

    file.close();
    return 0;
}

Itt a >> operátor helyett a std::getline metódust használjuk, amely egy egész sort beolvas.



Mikor nem használható az extrakciós operátor (>>)?

  • Ha teljes sorokat akarunk beolvasni (ekkor std::getline szükséges).
  • Ha az adatok között szóköz is lehet (>> szóköznél elvágja a beolvasást).
  • Ha az adat típusa eltér a vártól (pl. egy stringbe számokat olvasunk).
  • Ha fájl végére érünk (eof() vagy fail() metódusok segíthetnek az ellenőrzésben).



Összegzés

  • Az extrakciós operátor (>>) C++-ban fájlokból vagy standard inputból történő adatbeolvasásra szolgál.
  • A std::ifstream használható fájlok olvasására, a >> operátor pedig szóközig olvas be adatokat.
  • Ha teljes sorokat kell beolvasni, std::getline() ajánlott.
  • A beolvasásnál érdemes mindig ellenőrizni, hogy a fájl sikeresen megnyílt-e (if (!file)).