logo

C++ getline()

Cin, kullanıcıdan girdi almak için kullanılan ancak birden fazla satırda girdi alınmasına izin vermeyen bir nesnedir. Çoklu satırları kabul etmek için getline() fonksiyonunu kullanırız. Bu, önceden tanımlanmış bir fonksiyondur. sınırlayıcı karakterle karşılaşılıncaya kadar giriş akışından bir satırı veya dizeyi kabul etmek için kullanılan başlık dosyası.

getline() fonksiyonunun sözdizimi:

Bir işlevi temsil etmenin iki yolu vardır:

  • Bildirmenin ilk yolu üç parametreyi iletmektir.
 istream& getline( istream& is, string& str, char delim ); 

Yukarıdaki sözdizimi üç parametre içerir; yani, str , Ve paylaşırım .

Nerede,

dır-dir: Giriş akışının nereden okunacağını tanımlayan istream sınıfının bir nesnesidir.

cadde: String'in depolandığı bir string nesnesidir.

$home linux nedir
paylaşmak: Sınırlayıcı karakterdir.

Geri dönüş değeri

Bu işlev, işleve parametre olarak iletilen giriş akışı nesnesini döndürür.

  • Bildirmenin ikinci yolu iki parametreyi iletmektir.
 istream& getline( istream& is, string& str ); 

Yukarıdaki sözdizimi iki parametre içerir; dır-dir Ve cadde . Bu sözdizimi yukarıdaki sözdizimine neredeyse benzer; tek fark, herhangi bir sınırlayıcı karaktere sahip olmamasıdır.

Nerede,

dır-dir: Giriş akışının nereden okunacağını tanımlayan istream sınıfının bir nesnesidir.

cadde: String'in depolandığı bir string nesnesidir.

Geri dönüş değeri

Bu işlev aynı zamanda işleve parametre olarak iletilen giriş akışını da döndürür.

Bir örnek üzerinden anlayalım.

Öncelikle getline() fonksiyonunu kullanmadan kullanıcı girişini aldığımız bir örneğe bakacağız.

numaralı alfabe
 #include #include using namespace std; int main() { string name; // variable declaration std::cout &lt;&lt; &apos;Enter your name :&apos; &lt;&gt;name; cout&lt;<'
hello '<<name; return 0; } < pre> <p>In the above code, we take the user input by using the statement <strong>cin&gt;&gt;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 &apos;John Miller&apos; as user input, but only &apos;John&apos; was displayed. Therefore, we conclude that cin does not consider the character when the space character is encountered.</p> <p> <strong>Let&apos;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 &lt;&lt; &apos;Enter your name :&apos; &lt;&lt; std::endl; getline(cin,name); // implementing a getline() function cout&lt;<'
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 &lt;&lt; &apos;Enter your profile :&apos; &lt;&lt; std::endl; getline(cin,profile,&apos; &apos;); // implementing getline() function with a delimiting character. cout&lt;<'
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(&apos;&apos;) 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&amp; 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&apos;s understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout&lt;&lt; &apos;Enter your favorite fruit: &apos;; cin.getline(fruits, 50); // implementing getline() function std::cout &lt;&lt; &apos;
Your favorite fruit is :&apos;&lt;<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>

Yukarıdaki çıktıda kullanıcı girişi olarak 'John Miller' adını verdik ancak yalnızca 'John' görüntülendi. Dolayısıyla boşluk karakteri ile karşılaşıldığında cin karakterini dikkate almadığı sonucuna varıyoruz.

Yukarıdaki sorunu getline() fonksiyonunu kullanarak çözelim.

 #include #include using namespace std; int main() { string name; // variable declaration. std::cout &lt;&lt; &apos;Enter your name :&apos; &lt;&lt; std::endl; getline(cin,name); // implementing a getline() function cout&lt;<\'
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 &lt;&lt; &apos;Enter your profile :&apos; &lt;&lt; std::endl; getline(cin,profile,&apos; &apos;); // implementing getline() function with a delimiting character. cout&lt;<\'
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(&apos;&apos;) 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&amp; 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&apos;s understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout&lt;&lt; &apos;Enter your favorite fruit: &apos;; cin.getline(fruits, 50); // implementing getline() function std::cout &lt;&lt; &apos;
Your favorite fruit is :&apos;&lt;<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>

Yukarıdaki çıktıda, hem John hem de Miller kelimelerinin görüntülendiğini görebiliriz; bu, getline() fonksiyonunun boşluk karakterinden sonraki karakteri de dikkate aldığı anlamına gelir.

Boşluktan sonra karakteri okumak istemediğimizde aşağıdaki kodu kullanırız:

 #include #include using namespace std; int main() { string profile; // variable declaration std::cout &lt;&lt; &apos;Enter your profile :&apos; &lt;&lt; std::endl; getline(cin,profile,&apos; &apos;); // implementing getline() function with a delimiting character. cout&lt;<\'
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(&apos;&apos;) 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&amp; 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&apos;s understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout&lt;&lt; &apos;Enter your favorite fruit: &apos;; cin.getline(fruits, 50); // implementing getline() function std::cout &lt;&lt; &apos;
Your favorite fruit is :&apos;&lt;<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 Karakter Dizisi

Karakter dizisi için getline() fonksiyonunu da tanımlayabiliriz ancak sözdizimi öncekinden farklıdır.

Sözdizimi

 istream&amp; getline(char* , int size); 

Yukarıdaki sözdiziminde iki parametre vardır; Biri karakter * ve diğeri boyut .

Nerede,

karakter*: Diziyi işaret eden bir karakter işaretçisidir.

Boyut: Dizinin boyutunu tanımlayan bir sınırlayıcı görevi görür, bu da girdinin bu boyutu geçemeyeceği anlamına gelir.

sol birleştirme vs sağ birleştirme

Bir örnek üzerinden anlayalım.

 #include #include using namespace std; int main() { char fruits[50]; // array declaration cout&lt;&lt; &apos;Enter your favorite fruit: &apos;; cin.getline(fruits, 50); // implementing getline() function std::cout &lt;&lt; &apos;
Your favorite fruit is :&apos;&lt;<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>