2011-03-19 10 views
9

मैं विजुअल सी ++ 2008 का उपयोग कर रहा हूं। मैं एक टेक्स्ट फ़ाइल बनाना चाहता हूं और उस पर लिखना चाहता हूं।एक टेक्स्ट फ़ाइल बनाएं और उस पर लिखें

char filename[]="C:/k.txt"; 
FileStream *fs = new FileStream(filename, FileMode::Create, FileAccess::Write); 
fstream *fs =new fstream(filename,ios::out|ios::binary); 
fs->write("ghgh", 4); 
fs->close(); 

यहाँ FILESTREAM

+0

कृपया अपनी पोस्ट संपादित करें और आपके पास सही त्रुटि संदेश जोड़ें। इसके अलावा पूरा कोड (हेडर के साथ ठीक से स्वरूपित) शायद मदद करेगा। – Mat

+0

@user: 'FileStream' कहां से आता है? आप दो धाराएं क्यों बना रहे हैं? आप अपनी धाराओं को गतिशील रूप से क्यों बना रहे हैं? क्या आप एक जावा प्रोग्रामर हैं जो सी ++ पर स्विच हो गए हैं? –

+1

फाइलस्ट्रीम? यह एक .NET कक्षा सही है? क्या आप सी ++ करने की कोशिश कर रहे हैं? या सी ++/सीएलआई? –

उत्तर

12

की त्रुटि दिखाई दे रहा है क्योंकि आप fs दो अलग अलग तरीकों दो बार घोषित किया है तो आपको कोई त्रुटि मिलती है; लेकिन मैं उस कोड के कुछ भी नहीं रखूंगा, क्योंकि यह सी ++ और सी ++/सीएलआई का अजीब मिश्रण है।

आपके प्रश्न में यह स्पष्ट नहीं है कि आप मानक सी ++ या सी ++/सीएलआई करना चाहते हैं; यह मानते हुए कि आप चाहते हैं "सामान्य" सी ++, आपको क्या करना चाहिए:

#include <fstream> 
#include <iostream> 

// ... 

int main() 
{ 
    // notice that IIRC on modern Windows machines if you aren't admin 
    // you can't write in the root directory of the system drive; 
    // you should instead write e.g. in the current directory 
    std::ofstream fs("c:\\k.txt"); 

    if(!fs) 
    { 
     std::cerr<<"Cannot open the output file."<<std::endl; 
     return 1; 
    } 
    fs<<"ghgh"; 
    fs.close(); 
    return 0; 
} 

सूचना है कि मैं के बाद से सभी new सामान हटाया बहुत बार आप C++ इसकी आवश्यकता नहीं है - तुम सिर्फ ढेर पर धारा वस्तु आवंटित कर सकते हैं और आपके कोड में उपस्थित स्मृति मेमोरी के बारे में भूल जाओ, क्योंकि सामान्य (गैर जीसी-प्रबंधित) पॉइंटर्स को कचरा संग्रह के अधीन नहीं किया जाता है।

आप यह मानते हुए कर रहे हैं एक देशी समाधान निम्न काम करता है ठीक से खुश:

fstream *fs =new fstream(filename,ios::out|ios::binary); 
fs->write("ghgh", 4); 
fs->close(); 
delete fs;  // Need delete fs to avoid memory leak 

हालांकि, मैं fstream के लिए गतिशील स्मृति का उपयोग नहीं होता

+3

* और चाहिए * [केवल स्टैक पर आवंटित करें] –

3

यहाँ दोनों देशी और प्रबंधित सी ++ के लिए उदाहरण हैं वस्तु (यानी नया बयान और अंक)। यहाँ नया संस्करण है:

fstream fs(filename,ios::out|ios::binary); 
fs.write("ghgh", 4); 
fs.close(); 

संपादित करें, सवाल एक देशी समाधान (मूल रूप से यह स्पष्ट नहीं था) अनुरोध करने के लिए संपादित किया गया था, लेकिन मैं इस उत्तर छोड़ देंगे के रूप में यह किसी काम का हो सकता है

यदि आप सी ++ सीएलआई विकल्प (प्रबंधित कोड के लिए) की तलाश में हैं, तो मैं FileStream के बजाय StreamWriter का उपयोग करने की सलाह देता हूं। StreamWriter आपको प्रबंधित स्ट्रिंग्स के साथ काम करने की अनुमति देगा। ध्यान दें कि हटाए गए आईडीस्पोजेबल इंटरफ़ेस पर डिस्प्ले विधि को कॉल करेंगे और कचरा एकत्रित अंततः स्मृति को रिलीज़ करेगा:

StreamWriter ^fs = gcnew StreamWriter(gcnew String(filename)); 
fs->Write((gcnew String("ghgh"))); 
fs->Close(); 
delete fs; 
-3

आप एक टेक्स्ट बनाते हैं। उपयोगकर्ता से पूछें कि क्या वह इसे भेजना चाहता है। यदि वह हाँ कहता है, तो इसका मतलब है कि यह विशेष संदेश आउटबॉक्स संदेश के रूप में टैग किया जाना चाहिए अन्यथा यह एक इनबॉक्स संदेश होना चाहिए।

+1

प्रश्न स्पष्ट रूप से '.txt' फ़ाइलों के बारे में है, एसएमएस संदेश नहीं। इस उत्तर में कुछ भी टेक्स्ट फाइलों या विज़ुअल सी ++ 2008 से संबंधित नहीं है। –

+0

@ अहमद मुनीर आप उस उत्तर को पोस्ट करते समय क्या सोच रहे थे –

संबंधित मुद्दे