Cin je objekt koji se koristi za primanje unosa od korisnika, ali ne dopušta unos unosa u više redaka. Za prihvaćanje više redaka koristimo funkciju getline(). To je unaprijed definirana funkcija definirana u a datoteka zaglavlja koja se koristi za prihvaćanje retka ili niza iz ulaznog toka dok se ne naiđe na znak za razdvajanje.
Sintaksa funkcije getline():
Postoje dva načina predstavljanja funkcije:
- Prvi način deklariranja je prosljeđivanje tri parametra.
istream& getline( istream& is, string& str, char delim );
Gornja sintaksa sadrži tri parametra, tj. je, str , i dijelim .
Gdje,
je: To je objekt klase istream koji definira odakle čitati ulazni tok.
str: To je string objekt u kojem je string pohranjen.
verilog uvijekudio: To je karakter razgraničenja.
Povratna vrijednost
Ova funkcija vraća objekt ulaznog toka, koji se prosljeđuje kao parametar funkciji.
- Drugi način deklariranja je prosljeđivanje dva parametra.
istream& getline( istream& is, string& str );
Gornja sintaksa sadrži dva parametra, tj. je i str . Ova sintaksa je gotovo slična gornjoj sintaksi; razlika je samo u tome što nema nikakav karakter razgraničenja.
Gdje,
je: To je objekt klase istream koji definira odakle čitati ulazni tok.
str: To je string objekt u kojem je string pohranjen.
Povratna vrijednost
Ova funkcija također vraća ulazni tok, koji se prosljeđuje kao parametar funkciji.
Shvatimo kroz primjer.
ml do oz
Prvo ćemo pogledati primjer u kojem uzimamo korisnički unos bez korištenja funkcije getline().
#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>
U gornjem izlazu dali smo ime 'John Miller' kao korisnički unos, ali prikazano je samo 'John'. Stoga zaključujemo da cin ne uzima u obzir znak kada se naiđe na znak razmaka.
Riješimo gornji problem pomoću funkcije getline().
#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>
U gornjem izlazu možemo primijetiti da su obje riječi, tj. John i Miller, prikazane, što znači da funkcija getline() također uzima u obzir znak nakon znaka za razmak.
Kada ne želimo čitati znak nakon razmaka tada koristimo sljedeći kod:
#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 niz znakova
Također možemo definirati funkciju getline() za niz znakova, ali njena sintaksa je drugačija od prethodne.
Sintaksa
istream& getline(char* , int size);
U gornjoj sintaksi postoje dva parametra; jedno je char *, a drugi je veličina .
Gdje,
char*: To je pokazivač znakova koji pokazuje na niz.
java obrnuti niz
Veličina: Djeluje kao graničnik koji definira veličinu polja, što znači da unos ne može prijeći ovu veličinu.
Shvatimo kroz primjer.
#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>