C++

Beolvasás konzolról

Mi az a std::cin?

Az std::cin a C++ egyik alapeszköze, amelyet adatbevitelre használunk a konzolon keresztül. Lehetővé teszi a program számára, hogy a felhasználótól kapott adatokat fogadja és dolgozza fel.

Hogyan működik az std::cin?

Az std::cin az input stream része, amely a szabványos bemenetet kezeli (általában a billentyűzet).

Az adatokat a >> operátor segítségével olvassuk be, ami automatikusan eltárolja az értéket egy változóban.

     

      Példa egy szám beolvasására

      #include <iostream>
      int main()
      {

      int szam;
      std::cout << „Adj meg egy számot: „; std::cin >> szam; // A felhasználó által beírt érték a ‘szam’ változóba kerül std::cout << „A beírt szám: „ << szam << std::endl; return 0;

       

      Mi történik itt?

      • Az std::cout utasítással kérjük a felhasználót, hogy adjon meg egy számot
      • Az std::cin >> szam utasítás beolvassa a felhasználó által beírt értéket és eltárolja a szám nevű változóban
      • az std::cout visszajelzést ad a felhasználónak a beírt értékről

       

      Példa egy szöveg beolvasására

      #include <iostream> // Az input/output műveletekhez szükséges könyvtár
      #include <string> // A szöveges változók kezeléséhez szükséges könyvtár

      int main() {
      std::string szoveg; // Egy változó létrehozása szöveg tárolására
      std::cout << „Add meg a neved: „; // Üzenet a felhasználónak
      std::cin >> szoveg; // Az első szó beolvasása a felhasználótól (szóközig)

      std::cout << „Szia ” << szoveg << „!”; // Kiírja a beolvasott szöveget
      return 0; // Jelzi, hogy a program sikeresen lefutott
      }

      Fontos megjegyzések

      Az std::cin beolvasásának korlátai vannak, alapértelmezetten csak egy szót olvas be, a szóköz után megáll. Ha felhasználó azt írja be, Kiss Péter, csak a Kiss kerül beolvasásra.
      Ha hosszabb szöveget szeretnénk beolvasni, az std::getline(std::cin, szoveg); függvényt kell használni

      #include <iostream>
      #include <string>
      int main()
      { std::string nev;

      std::cout << „Add meg a teljes neved: „;
      std::getline(std::cin, nev); // Beolvassa az egész sort, beleértve a szóközöket is std::cout << „Szia „ << nev << „!” << std::endl;
      return 0;
      }

      Beolvasásánál nem (minden esetben) fog működni az ékezetes betű. Erre egy megoldás (de van több is), ha az #include <windows.h> parancsot még hozzáadjuk, majd a SetConsolOutputCP(1250); – középeurópai kódolás
      és SetConsolCP(1250);

      #include <iostream>
      #include <windows.h>
      int main() 
      {
      SetConsoleOutputCP(1250);
      SetConsoleCP(1250);
      std::string nev;
          std::cout << „Add meg a neved: „;
          std::getline(std::cin,nev); 
      std::cout << „Szia „ << nev << „!” << std::endl;
          return 0;
      }

      Ha azt írjuk, add meg a neved ékezettel és az nem jelenik meg megfelelően, akkor a Notepaden kell beállítani a kódolást: Karakterkódolás -> Közép-európai -> Windows 1250-re.  

      Edvac működés közben