logo

C++ getline()

ה-cin הוא אובייקט המשמש לקליטת קלט מהמשתמש אך אינו מאפשר לקחת את הקלט במספר שורות. כדי לקבל את השורות המרובות, אנו משתמשים בפונקציה getline() . זוהי פונקציה מוגדרת מראש המוגדרת ב-a קובץ header המשמש לקבלת שורה או מחרוזת מזרם הקלט עד להיתקל בתו המפריד.

תחביר של פונקציית getline():

ישנן שתי דרכים לייצוג פונקציה:

  • הדרך הראשונה להכריז היא להעביר שלושה פרמטרים.
 istream& getline( istream& is, string& str, char delim ); 

התחביר לעיל מכיל שלושה פרמטרים, כלומר, הוא, str , ו אני משתף .

איפה,

הוא: זהו אובייקט של מחלקת istream שמגדיר מהיכן לקרוא את זרם הקלט.

str: זהו אובייקט מחרוזת שבו מחרוזת מאוחסנת.

אלטרנטיבה xampp
לַחֲלוֹק: זה הדמות התוחמת.

ערך החזרה

פונקציה זו מחזירה את אובייקט זרם הקלט, אשר מועבר כפרמטר לפונקציה.

  • הדרך השנייה להכריז היא להעביר שני פרמטרים.
 istream& getline( istream& is, string& str ); 

התחביר לעיל מכיל שני פרמטרים, כלומר, הוא ו str . תחביר זה דומה כמעט לתחביר לעיל; ההבדל היחיד הוא שאין לו שום תו תוחם.

איפה,

הוא: זהו אובייקט של מחלקת istream שמגדיר מהיכן לקרוא את זרם הקלט.

str: זהו אובייקט מחרוזת שבו מחרוזת מאוחסנת.

ערך החזרה

פונקציה זו מחזירה גם את זרם הקלט, המועבר כפרמטר לפונקציה.

בואו נבין דרך דוגמה.

ראשית, נסתכל על דוגמה שבה ניקח את קלט המשתמש מבלי להשתמש בפונקציה getline().

 #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>

בפלט לעיל, נתנו את השם 'ג'ון מילר' כקלט משתמש, אך רק 'ג'ון' הוצג. לכן, אנו מסיקים ש-cin אינו מתחשב בדמות כאשר נתקלים בדמות החלל.

שם עיר בארה"ב

בואו נפתור את הבעיה שלעיל באמצעות הפונקציה getline() .

אפליקציות נסתרות
 #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>

בפלט לעיל, אנו יכולים לראות ששתי המילים, כלומר ג'ון ומילר, מוצגות, מה שאומר שהפונקציה getline() מחשיבה גם את התו שאחרי תו הרווח.

כשאנחנו לא רוצים לקרוא את התו אחרי הרווח אז אנחנו משתמשים בקוד הבא:

 #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

אנחנו יכולים גם להגדיר את הפונקציה getline() עבור מערך תווים, אבל התחביר שלה שונה מהקודם.

תחביר

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

בתחביר לעיל, ישנם שני פרמטרים; אחד הוא לְהַשְׁחִיר *, והשני הוא גודל .

איפה,

לְהַשְׁחִיר*: זהו מצביע תו המצביע על המערך.

גודל: הוא פועל כמפריד המגדיר את גודל המערך פירושו שהקלט אינו יכול לחצות את הגודל הזה.

בואו נבין דרך דוגמה.

 #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>