C ++ में टेक्स्ट फ़ाइल में टेक्स्ट कैसे जोड़ें?


180

C ++ में टेक्स्ट फ़ाइल में टेक्स्ट कैसे जोड़ें? और अगर यह पहले से मौजूद नहीं है तो एक नई टेक्स्ट फाइल बनाएं और अगर यह मौजूद है तो टेक्स्ट को इसमें जोड़ें।


जवाबों:


283

आपको एपेंड ओपन मोड को निर्दिष्ट करने की आवश्यकता है

#include <fstream>

int main() {  
  std::ofstream outfile;

  outfile.open("test.txt", std::ios_base::app); // append instead of overwrite
  outfile << "Data"; 
  return 0;
}

12
फ़ाइल को मैन्युअल रूप से बंद करने की आवश्यकता नहीं है, क्योंकि यह विनाश पर ऐसा करता है। देखें stackoverflow.com/questions/748014 । इसके अलावा, उदाहरण में <iostream> का उपयोग नहीं किया जा रहा है।
स्वप्न

6
आप ios_base के स्थान पर ios :: ऐप का उपयोग कर सकते हैं :: ऐप
ट्रेवर हिक्की

4
के std::ofstream::out | std::ofstream::appबजाय का उपयोग कर सकते हैं std::ios_base::app? cplusplus.com/reference/fstream/ofstream/open
Volomike

6
यदि आप कोड में कटौती करना चाहते हैं, तो आप कंस्ट्रक्टर में और भी कर सकते हैं: std :: ofstream outfile ("test.txt", std :: ios_base :: app);
दलदल

outउपयोग करते समय आपको ध्वज को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं है std::ofstream, यह हमेशा outआपके लिए ध्वनिक रूप से ध्वज का उपयोग करता है । के लिए inध्वज के साथ भी std::ifstream। यदि आप इसके बजाय उपयोग कर रहे थे तो आपको स्पष्ट रूप से inऔर outझंडे को निर्दिष्ट करना होगा std::fstream
रेमी लेबेउ

12

मैं इस कोड का उपयोग करता हूं। यह सुनिश्चित करता है कि यदि यह मौजूद नहीं है तो फ़ाइल बन जाती है और इसमें थोड़ी सी त्रुटि की जाँच भी हो जाती है।

static void appendLineToFile(string filepath, string line)
{
    std::ofstream file;
    //can't enable exception now because of gcc bug that raises ios_base::failure with useless message
    //file.exceptions(file.exceptions() | std::ios::failbit);
    file.open(filepath, std::ios::out | std::ios::app);
    if (file.fail())
        throw std::ios_base::failure(std::strerror(errno));

    //make sure write fails with exception if something is wrong
    file.exceptions(file.exceptions() | std::ios::failbit | std::ifstream::badbit);

    file << line << std::endl;
}

11
 #include <fstream>
 #include <iostream>

 FILE * pFileTXT;
 int counter

int main()
{
 pFileTXT = fopen ("aTextFile.txt","a");// use "a" for append, "w" to overwrite, previous content will be deleted

 for(counter=0;counter<9;counter++)
 fprintf (pFileTXT, "%c", characterarray[counter] );// character array to file

 fprintf(pFileTXT,"\n");// newline

 for(counter=0;counter<9;counter++)
 fprintf (pFileTXT, "%d", digitarray[counter] );    // numerical to file

 fprintf(pFileTXT,"A Sentence");                   // String to file

 fprintf (pFileXML,"%.2x",character);              // Printing hex value, 0x31 if character= 1

 fclose (pFileTXT); // must close after opening

 return 0;

}

28
यह C रास्ता है, C ++ नहीं।
दुजान

3
@ Dzenan। C, C ++ का सबसेट होने के नाते इस दृष्टिकोण को अमान्य नहीं करता है।
ऑसैड

6
@Oaid C, C ++ का सबसेट नहीं है। कंपाइलर पिछड़े संगतता के लिए इसके कोड को संकलित करते हैं। कई सी-वैध चीजें सी ++ नहीं हैं - वैध चीजें, जैसे वीएलए।
14

लेकिन अगर हम फ़ाइल के बीच में पाठ जोड़ना चाहते हैं? सी शैली के साथ? File * का उपयोग कर रहे हैं? "a +" या "a" के साथ fseek () और ftell () ने मेरे लिए काम नहीं किया
विन्सेन्ट थोरपे

2

आप इसे इस तरह से भी कर सकते हैं

#include <fstream>

int main(){   
std::ofstream ost {outputfile, std::ios_base::app};

ost.open(outputfile);
ost << "something you want to add to your outputfile";
ost.close();
return 0;
}

1
ofstreamकंस्ट्रक्टर को फाइल नाम देने से फाइल तुरंत खुल जाती है, इसलिए open()बाद में कॉल करना बेमानी है।
रेमी लेबेउ

1

मुझे "C ++ प्रोग्रामिंग इन इजी स्टेप्स" नामक पुस्तक के उत्तर के लिए अपना कोड मिला। नीचे काम करना चाहिए।

#include <fstream>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    ofstream writer("filename.file-extension" , ios::app);

    if (!writer)
    {
        cout << "Error Opening File" << endl;
        return -1;
    }

    string info = "insert text here";
    writer.append(info);

    writer << info << endl;
    writer.close;
    return 0;   
} 

मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।


1

आप एक का उपयोग कर सकते हैं fstreamऔर इसे std::ios::appध्वज के साथ खोल सकते हैं । नीचे दिए गए कोड पर एक नज़र डालें और यह आपके सिर को साफ कर दे।

...
fstream f("filename.ext", f.out | f.app);
f << "any";
f << "text";
f << "written";
f << "wll";
f << "be append";
...

आप यहाँ खुले मोड के बारे में और यहाँ की fstreams के बारे में अधिक जानकारी प्राप्त कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.