কম্পিউটার

C++ এ I/O পুনর্নির্দেশ


সি-তে, আমরা পুনঃনির্দেশের উদ্দেশ্যে ফ্রিওপেন() ফাংশন ব্যবহার করতে পারি। এই ফাংশনটি ব্যবহার করে, আমরা বিদ্যমান FILE পয়েন্টারকে অন্য স্ট্রীমে পুনঃনির্দেশ করতে পারি। ফ্রিওপেনের সিনট্যাক্স নিচের মত:

FILE *freopen(const char* filename, const char* mode, FILE *stream)

C++ এও, আমরা পুনঃনির্দেশ করতে পারি। C++ এ, স্ট্রীম ব্যবহার করা হয়। এখানে আমরা আমাদের নিজস্ব স্ট্রীম ব্যবহার করতে পারি, এবং সিস্টেম স্ট্রীমকেও রিডাইরেক্ট করতে পারি। C++ এ, তিন ধরনের স্ট্রিম আছে।

  • istream :স্ট্রীম, যা শুধুমাত্র ইনপুট সমর্থন করতে পারে
  • ওস্ট্রিম :স্ট্রীম, যা শুধুমাত্র আউটপুট সমর্থন করতে পারে
  • iostream :এগুলি ইনপুট এবং আউটপুটের জন্য ব্যবহার করা যেতে পারে৷

এই ক্লাস, এবং ফাইল স্ট্রিম ক্লাসগুলি ios এবং স্ট্রিম-বাফ ক্লাস থেকে নেওয়া হয়েছে। সুতরাং ফাইলস্ট্রিম এবং আইও স্ট্রিম অবজেক্ট একইভাবে আচরণ করে। C++ যেকোন স্ট্রীমে স্ট্রিম বাফার সেট করতে দেয়। তাই আমরা রিডাইরেক্ট করার জন্য স্ট্রীমের সাথে যুক্ত স্ট্রীমবাফার পরিবর্তন করতে পারি। উদাহরণস্বরূপ, যদি দুটি স্ট্রীম Aand B থাকে এবং আমরা স্ট্রীম A স্ট্রীম B-এ পুনঃনির্দেশ করতে চাই, আমাদের এই পদক্ষেপগুলি অনুসরণ করতে হবে:

  • স্ট্রিম বাফার A পান এবং এটি সংরক্ষণ করুন
  • স্ট্রিম বাফার A কে অন্য স্ট্রিম বাফার B এ সেট করুন
  • স্ট্রিম বাফার A কে এর আগের অবস্থানে রিসেট করুন (ঐচ্ছিক)

উদাহরণ কোড

#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main() {
   fstream fs;
   fs.open("abcd.txt", ios::out);
   string lin;
   // Make a backup of stream buffer
   streambuf* sb_cout = cout.rdbuf();
   streambuf* sb_cin = cin.rdbuf();
   // Get the file stream buffer
   streambuf* sb_file = fs.rdbuf();
   // Now cout will point to file
   cout.rdbuf(sb_file);
   cout << "This string will be stored into the File" << endl;
   //get the previous buffer from backup
   cout.rdbuf(sb_cout);
   cout << "Again in Cout buffer for console" << endl;
   fs.close();
}

আউটপুট

Again in Cout buffer for console

abcd.txt

This string will be stored into the File

  1. C++ স্ট্রীম ক্লাস স্ট্রাকচার

  2. C# এ সূচক-ভিত্তিক I/O ArrayList সংগ্রহ কি?

  3. ঠিক করুন:qBittorrent I/O ত্রুটি

  4. Oracle 11g I/O ক্রমাঙ্কন ওভারভিউ