A std::getline() egy szabványos C++ függvény, amely soronként olvas be szöveges adatokat egy szöveges fájlból, vagy bármely karakterfolyamból, például cin-ből. Ez egy hasznos függvény olyan szöveges fájlok feldolgozásához, amelyek sorokra vannak bontva, vagy a felhasználótól való szöveges bemenetek feldolgozásához.
Tartalomjegyzék
std::getline() használata
cpp
#include <iostream>
#include <fstream>
#include <string>
int main() {
// Fájlból olvasás
std::ifstream file("input.txt");
std::string line;
while (std::getline(file, line)) {
// Feldolgozza a sort
}
// Felhasználótól való olvasás
std::string input;
std::cout << "Írjon be egy sort: ";
std::getline(std::cin, input);
}
A std::getline() függvény a következőképpen használható:
1. Nyisson meg egy szövegesfájlt olvasásra, vagy hozzon létre egy std::ifstream objektumot a fájlhoz.
2. Deklaráljon egy string változót, amelybe a sorok be lesznek olvasva.
3. Hívja meg a std::getline() függvényt, amelynek két paramétere van: a bemeneti stream és a string változó, amelybe a sor kerül.
4. A függvény akkor adja vissza true értéket, ha sikeresen olvasott be egy sort, és false értéket, ha a fájl vége elért, vagy hiba történt.
5. Ismételje meg a 3. és 4. lépést, amíg a std::getline() függvény true értéket ad vissza.
Példa:
cpp
// Fájlból olvasás
std::ifstream file("input.txt");
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
// Felhasználótól való olvasás
std::string input;
std::cout << "Írjon be egy sort: ";
std::getline(std::cin, input);
std::cout << "A beírt sor: " << input << std::endl;
std::getline() paraméterei
| Paraméter | Leírás |
|—|—|
| stream | Az a karakterfolyam, amelyből a sorokat beolvassuk. Ez lehet egy fájlból származó bemeneti stream, például std::ifstream, vagy a felhasználótól érkező bemeneti stream, például std::cin. |
| str | A string változó, amelybe az olvasott sor kerül. |
std::getline() visszatérési értéke
A std::getline() függvény a következő visszatérési értékeket adhatja vissza:
* true: Ha sikeresen olvasott be egy sort.
* false: Ha a fájl vége elért, vagy hiba történt.
std::getline() használatának előnyei
* Soronkénti olvasás: A std::getline() függvény soronkénti szöveges adatok olvasására szolgál. Ez hasznos olyan szöveges fájlok feldolgozásához, amelyek sorokra vannak bontva.
* Egyszerű használat: A std::getline() függvény egyszerűen használható, és csak két paramétert igényel.
* Hatékony: A std::getline() függvény hatékonyan olvas be sorokat, és nem igényel különleges pufferelést vagy memóriakezelést.
std::getline() használatának hátrányai
* Csak szöveges adatok: A std::getline() függvény csak szöveges adatok olvasására szolgál. Bináris adatok olvasására nem használható.
* Sorképek: A std::getline() függvény nem olvassa be a sorképeket. Ha a sorképek fontosak, akkor azokat külön kell feldolgozni.
Következtetés
A std::getline() függvény egy hasznos és sokoldalú függvény szöveges adatok soronkénti olvasására. Egyszerű használni, hatékony, és különféle alkalmazásokban használható, mint például fájlok feldolgozása és felhasználói bemenetkezelés. Annak ellenére, hogy vannak bizonyos korlátai, a std::getline() függvény továbbra is nélkülözhetetlen eszköz a C++ szöveges adatfeldolgozó eszköztárában.
Gyakran Ismételt Kérdések (GYIK)
1. Mi a különbség a std::getline() és a getline() függvények között?
A std::getline() a C++ standard könyvtár része, míg a getline() függvény a C standard könyvtár része. A std::getline() függvény szabványosabb és könnyebben használható, mint a getline() függvény.
2. Hogyan olvashatok be több sort egy stringbe?
Több sort olvashat be egy stringbe egy ciklus segítségével, amíg a std::getline() függvény nem adja vissza false értéket.
3. Hogyan kezelhetem a std::getline() függvény hibáit?
A std::getline() függvény hibáit a stream.fail() függvény segítségével kezelheti.
4. Hogyan olvashatok be egy egész sort, beleértve a sorképeket?
Egész sort, beleértve a sorképeket, úgy olvashat be, hogy megadja a std::getline() függvénynek egy ws stringet.
5. Hogyan olvashatok be egy sort, és távolíthatom el belőle a szóközöket?
Egy sort olvashat be, és eltávolíthatja belőle a szóközöket a trim() függvény segítségével.
6. Hogyan olvashatok be egy sort, és konvertálhatom egész számmá?
Egy sort olvashat be, és konvertálhatja egész számmá a stoi() függvény segítségével.
7. Hogyan olvashatok be egy sort, és konvertálhatom lebegőpontos számmá?
Egy sort olvashat be, és konvertálhatja lebegőpontos számmá a stod() függvény segítségével.
8. Hogyan olvashatok be egy sort, és konvertálhatom bool értékké?
Egy sort olvashat be, és konvertálhatja bool értékké a stoi() függvény segítségével.
9. Hogyan olvashatok be egy sort, és konvertálhatom nagybetűssé?
Egy sort olvashat be, és konvertálhatja nagybetűssé a toupper() függvény segítségével.
10. Hogyan olvashatok be egy sort, és konvertálhatom kisbetűssé?
Egy sort olvashat be, és konvertálhatja kisbetűssé a tolower() függvén segítségével.