সোমবার, ১২ এপ্রিল, ২০২১

getline( ) দিয়ে space (' ') সহ string input নেওয়া

কিছু প্রব্লেমে আমাদের space (‘ ’) character সম্বলিত string input নিতে হয়। cin ব্যবহার করে সাধারণ string এর মতো আমরা এই ধরনের string input নিতে পারি না। এর জন্য আমরা getline() ব্যবহার করতে পারি। কোন string s কে input নেওয়ার জন্য getline(cin,s); - এই statement টি লিখলেই computer space (‘ ’) character সম্বলিত string input নিয়ে string s এর মধ্যে store করবে। এক্ষেত্রে কত গুলো character নিবে সে ব্যাপারে একটু খেয়াল রাখতে হবে। যতক্ষণ না পর্যন্ত ‘\n’ character পাবে, ততক্ষণ getline() ফাংশনটি character নিতে থাকবে। যদি আমরা cin ব্যবহার করে input নিয়ে থাকি তবে পরবর্তী line এ getline() ব্যবহার করে input নিলে একটি empty string store হয়ে যাবে। এই সমস্যা এড়ানোর জন্য আমাদের এই empty string কে আলাদা করে input নিতে হবে। যেমন, নিচের program টি লক্ষ করি।



#include<bits/stdc++.h>


using namespace std;


int main(){

    string empty_string, s;

    int n;

    cin>>n;

    getline(cin,empty_string);

    

    getline(cin,s);

    

    cout<<empty_string<<"\n";

    cout<<s<<"\n";

}



Input:

5

Hello


Output:


Hello




এই প্রোগ্রামে আমরা integer n কে input নেওয়ার পর নতুন line এ “Hello” input নিয়েছি। ফলে “Hello” input নেওয়ার আগে একটি ‘\n’ input হয়েছে। এর ফলে যে empty string আমরা পাচ্ছি সেটিকে আমরা getline(cin,empty_string) এর মাধ্যমে empty_string variable এ store করেছি। 


উপরের আলোচনা আমরা বুঝে থাকলে আর একটু মাথা খাটিয়ে Timus 1563 সমস্যাটির সমাধান করে ফেলতেই পারি, তাই না? 

 

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন