Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में I/O रीडायरेक्शन

C में, हम रीडायरेक्शन उद्देश्यों के लिए freopen() फंक्शन का उपयोग कर सकते हैं। इस फंक्शन का उपयोग करके, हम मौजूदा FILE पॉइंटर को दूसरे स्ट्रीम पर रीडायरेक्ट कर सकते हैं। freopen का सिंटैक्स नीचे जैसा है:

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

C++ में भी, हम रीडायरेक्शन कर सकते हैं। C++ में, स्ट्रीम्स का उपयोग किया जाता है। यहां हम अपने स्वयं के स्ट्रीम का उपयोग कर सकते हैं, और सिस्टम स्ट्रीम को भी रीडायरेक्ट कर सकते हैं। C++ में तीन प्रकार के स्ट्रीम हैं।

  • istream: केवल इनपुट सपोर्ट करने वाला स्ट्रीम
  • ostream: केवल आउटपुट सपोर्ट करने वाला स्ट्रीम
  • iostream: इनका उपयोग इनपुट और आउटपुट दोनों के लिए किया जा सकता है।

ये क्लासेस, और फाइल स्ट्रीम क्लासेस ios और streambuf क्लास से डेराइव्ड हैं। इसलिए फाइलस्ट्रीम और IO स्ट्रीम ऑब्जेक्ट्स समान रूप से व्यवहार करते हैं। C++ किसी भी स्ट्रीम के लिए स्ट्रीम बफर सेट करने की अनुमति देता है। इसलिए हम स्ट्रीम से जुड़े स्ट्रीम बफर को बदलकर केवल रीडायरेक्ट कर सकते हैं। उदाहरण के लिए, यदि दो स्ट्रीम A और 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;
    // स्ट्रीम बफर का बैकअप बनाएं
    streambuf* sb_cout = cout.rdbuf();
    streambuf* sb_cin = cin.rdbuf();
    // फाइल स्ट्रीम बफर प्राप्त करें
    streambuf* sb_file = fs.rdbuf();
    // अब cout फाइल की ओर इशारा करेगा
    cout.rdbuf(sb_file);
    cout << "This string will be stored into the File" << endl;
    // बैकअप से पिछला बफर प्राप्त करें
    cout.rdbuf(sb_cout);
    cout << "Again in Cout buffer for console" << endl;
    fs.close();
    return 0;
}

आउटपुट

Again in Cout buffer for console

abcd.txt

This string will be stored into the File
  1. C++ स्ट्रीम क्लासेस की संरचना C++ स्ट्रीम क्लासेस की संरचना

    C++ में स्ट्रीम प्रोग्राम थ्रेड और I/O के बीच स्थानांतरित होने वाले वर्णों की स्ट्रीम को संदर्भित करता है। स्ट्रीम क्लासेस C++ में फाइलों और I/O डिवाइस पर इनपुट और आउटपुट ऑपरेशन के लिए उपयोग की जाती हैं। इन क्लासेस में प्रोग्राम के इनपुट और आउटपुट को संभालने के लिए विशिष्ट विशेषताएं होती हैं। iostre

  1. फिक्स: qBittorrent I/O त्रुटि फिक्स: qBittorrent I/O त्रुटि

    qBittorrent एक मुफ्त, क्रॉस-प्लेटफॉर्म, और ओपन-सोर्स बिटटोरेंट क्लाइंट है और µTorrent का एक विकल्प है। यह Qt टूलकिट पर आधारित C++ में लिखा गया है और इसे स्वयंसेवकों द्वारा विकसित किया गया है। हालांकि, कई उपयोगकर्ता रिपोर्ट कर रहे हैं कि उन्हें An I/O error occurred या I/O error: Permission Denied मि

  1. Oracle 11g डिस्क I/O अनुकूलन: एक व्यावहारिक अंशांकन गाइड Oracle 11g डिस्क I/O अनुकूलन: एक व्यावहारिक अंशांकन गाइड

    हर बार जब Oracle® डेटाबेस डिस्क से डेटा पढ़ता या लिखता है, तो डेटाबेस डिस्क इनपुट और आउटपुट (I/O) ऑपरेशन उत्पन्न करता है। कई सॉफ्टवेयर एप्लिकेशन का प्रदर्शन डिस्क I/O द्वारा सीमित होता है, और जो एप्लिकेशन अधिकांश सेंट्रल प्रोसेसिंग यूनिट (CPU) समय I/O गतिविधि के पूरा होने की प्रतीक्षा में बिताते हैं