cin هو كائن يستخدم لأخذ المدخلات من المستخدم ولكنه لا يسمح بأخذ المدخلات في أسطر متعددة. لقبول الأسطر المتعددة، نستخدم الدالة getline(). إنها وظيفة محددة مسبقًا محددة في أ يستخدم ملف الرأس لقبول سطر أو سلسلة من دفق الإدخال حتى تتم مواجهة الحرف المحدد.
بناء جملة الدالة getline():
هناك طريقتان لتمثيل الدالة:
- الطريقة الأولى للإعلان هي تمرير ثلاث معلمات.
istream& getline( istream& is, string& str, char delim );
يحتوي بناء الجملة أعلاه على ثلاث معلمات، أي، هو، شارع ، و أشارك .
أين،
يكون: إنه كائن من فئة istream الذي يحدد مكان قراءة دفق الإدخال.
شارع: إنه كائن سلسلة يتم تخزين السلسلة فيه.
com.strsepيشارك: إنها الشخصية الفاصلة.
قيمة الإرجاع
تقوم هذه الدالة بإرجاع كائن دفق الإدخال، والذي يتم تمريره كمعلمة إلى الدالة.
- الطريقة الثانية للإعلان هي تمرير معلمتين.
istream& getline( istream& is, string& str );
يحتوي بناء الجملة أعلاه على معلمتين، أي يكون و شارع . بناء الجملة هذا يشبه تقريبًا بناء الجملة أعلاه؛ والفرق الوحيد هو أنه لا يحتوي على أي حرف محدد.
أين،
يكون: إنه كائن من فئة istream الذي يحدد مكان قراءة دفق الإدخال.
شارع: إنه كائن سلسلة يتم تخزين السلسلة فيه.
قيمة الإرجاع
تقوم هذه الدالة أيضًا بإرجاع دفق الإدخال، الذي يتم تمريره كمعلمة إلى الدالة.
الأبجدية مع الأرقام
دعونا نفهم من خلال مثال.
أولاً، سننظر إلى مثال حيث نأخذ مدخلات المستخدم دون استخدام دالة 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>
في الإخراج أعلاه، أعطينا الاسم 'John Miller' كمدخل للمستخدم، ولكن تم عرض 'John' فقط. لذلك، نستنتج أن cin لا يأخذ في الاعتبار الحرف عند مواجهة حرف المسافة.
دعونا نحل المشكلة المذكورة أعلاه باستخدام وظيفة 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>
في الإخراج أعلاه، يمكننا ملاحظة أنه يتم عرض كلتا الكلمتين، أي John وMiller، مما يعني أن وظيفة getline() تأخذ الحرف بعد حرف المسافة أيضًا.
عندما لا نريد قراءة الحرف بعد المسافة نستخدم الكود التالي:
#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
يمكننا أيضًا تحديد دالة getline() لمصفوفة الأحرف، لكن تركيبها يختلف عن الصيغة السابقة.
بناء الجملة
istream& getline(char* , int size);
في بناء الجملة أعلاه، هناك معلمتان؛ واحد هو شار *، والآخر هو مقاس .
أين،
ما هو السبات في جافا
شار*: إنه مؤشر حرف يشير إلى المصفوفة.
مقاس: إنه بمثابة محدد يحدد حجم المصفوفة مما يعني أن الإدخال لا يمكن أن يتجاوز هذا الحجم.
دعونا نفهم من خلال مثال.
#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>