A cin egy olyan objektum, amely a felhasználó bevitelére szolgál, de nem teszi lehetővé a bemenet többsoros felvételét. A többsor elfogadásához a getline() függvényt használjuk. Ez egy előre definiált függvény, amelyet a fejlécfájl, amely egy sor vagy karakterlánc elfogadására szolgál a bemeneti adatfolyamból, amíg a határoló karaktert meg nem találjuk.
A getline() függvény szintaxisa:
Egy függvény ábrázolásának két módja van:
- A deklarálás első módja három paraméter átadása.
istream& getline( istream& is, string& str, char delim );
A fenti szintaxis három paramétert tartalmaz, pl. van, str , és megosztom .
Ahol,
ez: Ez az istream osztály egyik objektuma, amely meghatározza, hogy honnan kell olvasni a bemeneti adatfolyamot.
str: Ez egy karakterlánc objektum, amelyben a karakterlánc tárolódik.
python nyomtatás 2 tizedesjegyigOssza meg: Ez a határoló karakter.
Visszatérési érték
Ez a függvény visszaadja a bemeneti adatfolyam objektumot, amelyet paraméterként ad át a függvénynek.
- A deklarálás második módja két paraméter átadása.
istream& getline( istream& is, string& str );
A fenti szintaxis két paramétert tartalmaz, pl. van és str . Ez a szintaxis majdnem hasonló a fenti szintaxishoz; az egyetlen különbség az, hogy nincs határoló jellege.
Ahol,
ez: Ez az istream osztály egyik objektuma, amely meghatározza, hogy honnan kell olvasni a bemeneti adatfolyamot.
str: Ez egy karakterlánc objektum, amelyben a karakterlánc tárolódik.
Visszatérési érték
Ez a függvény visszaadja a bemeneti adatfolyamot is, amelyet paraméterként ad át a függvénynek.
Értsük meg egy példán keresztül.
string to int
Először nézzünk meg egy példát, ahol a felhasználói bevitelt a getline() függvény használata nélkül vesszük.
#include #include using namespace std; int main() { string name; // variable declaration std::cout << 'Enter your name :' <>name; cout<<' hello '<<name; return 0; } < pre> <p>In the above code, we take the user input by using the statement <strong>cin>>name,</strong> i.e., we have not used the <strong>getline()</strong> function.</p> <p> <strong>Output</strong> </p> <pre> Enter your name : John Miller Hello John </pre> <p>In the above output, we gave the name 'John Miller' as user input, but only 'John' was displayed. Therefore, we conclude that cin does not consider the character when the space character is encountered.</p> <p> <strong>Let's resolve the above problem by using getline() function.</strong> </p> <pre> #include #include using namespace std; int main() { string name; // variable declaration. std::cout << 'Enter your name :' << std::endl; getline(cin,name); // implementing a getline() function cout<<' hello '<<name; return 0;} < pre> <p>In the above code, we have used the <strong>getline()</strong> function to accept the character even when the space character is encountered.</p> <p> <strong>Output</strong> </p> <pre> Enter your name : John Miller Hello John Miller </pre> <p>In the above output, we can observe that both the words, i.e., John and Miller, are displayed, which means that the getline() function considers the character after the space character also.</p> <p> <strong>When we do not want to read the character after space then we use the following code:</strong> </p> <pre> #include #include using namespace std; int main() { string profile; // variable declaration std::cout << 'Enter your profile :' << std::endl; getline(cin,profile,' '); // implementing getline() function with a delimiting character. cout<<' profile is :'<<p>In the above code, we take the user input by using getline() function, but this time we also add the delimiting character('') in a third parameter. Here, delimiting character is a space character, means the character that appears after space will not be considered.<p></p> <p> <strong>Output</strong> </p> <pre> Enter your profile : Software Developer Profile is: Software </pre> <h3>Getline Character Array</h3> <p>We can also define the getline() function for character array, but its syntax is different from the previous one.</p> <p> <strong>Syntax</strong> </p> <pre> istream& getline(char* , int size); </pre> <p>In the above syntax, there are two parameters; one is <strong>char</strong> *, and the other is <strong>size</strong> .</p> <p> <strong>Where,</strong> </p> <p> <strong>char*:</strong> It is a character pointer that points to the array.</p> <p> <strong>Size:</strong> It acts as a delimiter that defines the size of the array means input cannot cross this size.</p> <p> <strong>Let's understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits></pre></' profile></pre></' hello></pre></' hello>
A fenti kimenetben a 'John Miller' nevet adtuk felhasználói bevitelként, de csak a 'John' volt látható. Ezért arra a következtetésre jutunk, hogy a cin nem veszi figyelembe a karaktert, amikor a szóköz karakterrel találkozik.
Oldjuk meg a fenti problémát a getline() függvény használatával.
#include #include using namespace std; int main() { string name; // variable declaration. std::cout << 'Enter your name :' << std::endl; getline(cin,name); // implementing a getline() function cout<<\' hello \'<<name; return 0;} < pre> <p>In the above code, we have used the <strong>getline()</strong> function to accept the character even when the space character is encountered.</p> <p> <strong>Output</strong> </p> <pre> Enter your name : John Miller Hello John Miller </pre> <p>In the above output, we can observe that both the words, i.e., John and Miller, are displayed, which means that the getline() function considers the character after the space character also.</p> <p> <strong>When we do not want to read the character after space then we use the following code:</strong> </p> <pre> #include #include using namespace std; int main() { string profile; // variable declaration std::cout << 'Enter your profile :' << std::endl; getline(cin,profile,' '); // implementing getline() function with a delimiting character. cout<<\' profile is :\'<<p>In the above code, we take the user input by using getline() function, but this time we also add the delimiting character('') in a third parameter. Here, delimiting character is a space character, means the character that appears after space will not be considered.<p></p> <p> <strong>Output</strong> </p> <pre> Enter your profile : Software Developer Profile is: Software </pre> <h3>Getline Character Array</h3> <p>We can also define the getline() function for character array, but its syntax is different from the previous one.</p> <p> <strong>Syntax</strong> </p> <pre> istream& getline(char* , int size); </pre> <p>In the above syntax, there are two parameters; one is <strong>char</strong> *, and the other is <strong>size</strong> .</p> <p> <strong>Where,</strong> </p> <p> <strong>char*:</strong> It is a character pointer that points to the array.</p> <p> <strong>Size:</strong> It acts as a delimiter that defines the size of the array means input cannot cross this size.</p> <p> <strong>Let's understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits></pre></\' profile></pre></\' hello>
A fenti kimenetben megfigyelhető, hogy mindkét szó, azaz John és Miller megjelenik, ami azt jelenti, hogy a getline() függvény figyelembe veszi a szóköz utáni karaktert is.
Ha nem akarjuk beolvasni a szóköz utáni karaktert, akkor a következő kódot használjuk:
#include #include using namespace std; int main() { string profile; // variable declaration std::cout << 'Enter your profile :' << std::endl; getline(cin,profile,' '); // implementing getline() function with a delimiting character. cout<<\' profile is :\'<<p>In the above code, we take the user input by using getline() function, but this time we also add the delimiting character('') in a third parameter. Here, delimiting character is a space character, means the character that appears after space will not be considered.<p></p> <p> <strong>Output</strong> </p> <pre> Enter your profile : Software Developer Profile is: Software </pre> <h3>Getline Character Array</h3> <p>We can also define the getline() function for character array, but its syntax is different from the previous one.</p> <p> <strong>Syntax</strong> </p> <pre> istream& getline(char* , int size); </pre> <p>In the above syntax, there are two parameters; one is <strong>char</strong> *, and the other is <strong>size</strong> .</p> <p> <strong>Where,</strong> </p> <p> <strong>char*:</strong> It is a character pointer that points to the array.</p> <p> <strong>Size:</strong> It acts as a delimiter that defines the size of the array means input cannot cross this size.</p> <p> <strong>Let's understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits></pre></\' profile>
Getline karaktertömb
A karaktertömbhöz a getline() függvényt is megadhatjuk, de a szintaxisa eltér az előzőtől.
Szintaxis
istream& getline(char* , int size);
A fenti szintaxisban két paraméter található; az egyik char *, a másik pedig az méret .
Ahol,
char*: Ez egy karaktermutató, amely a tömbre mutat.
egész számból karakterláncot
Méret: Határolóként működik, amely meghatározza a tömb méretét, ami azt jelenti, hogy a bemenet nem lépheti át ezt a méretet.
Értsük meg egy példán keresztül.
#include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits>
\' profile>\' hello>' hello>