2011-08-03 21 views
12

Halihazırda varolan bir metin dosyasının sonuna akıtmak istediğim bir dize olan önceden oluşturulmuş bir programım var. Ne sahip küçük tüm şudur: (C++)Bir dosyanın sonuna bir dize yazma (C++)

void main() 
{ 
    std::string str = "I am here"; 
    fileOUT << str; 
} 

Bunun eklenecek çok şey var farkında ve benim için kod insanları soruyorum görünüyorsa özür dilerim, ama tamamen kayıp duyuyorum çünkü daha önce hiç böyle bir programlama yapmamıştım.

İnternete rastladığım farklı yöntemler denedim, ancak bu işe yarayan ve biraz tanıdık olan en yakın şey.

+1

'main' fonksiyonu int'' döndürür. Her zaman. (Orijinal teklifim değil.) Normal sonlandırma veya EXIT_FAILURE için işletim sistemine 0 veya EXIT_SUCCESS dönün. –

+1

@Thomas Matthews Bu kodun tamamı değil ... aslında bu benim ana işlevim değil. Ama bunu benim için belirttiğin için teşekkürler! – ked

cevap

22

dosyaların sonuna içeriğini eklemek için std::ios::app

#include <fstream> 

std::ofstream out; 

// std::ios::app is the open mode "append" meaning 
// new data will be written to the end of the file. 
out.open("myfile.txt", std::ios::app); 

std::string str = "I am here."; 
out << str; 
+0

Aman tanrım, bu hella hızlı bir cevaptı! Çok teşekkürler, bu kadar basit olduğuna inanamıyorum. Ama bir sorum var, ___ açık ("dosya", std :: ios :: app) çok fazla bellek kaplıyor mu? Çok büyük dosyaları ile çalışıyorum, bu yüzden çok kritik. – ked

+0

@ked: Hayır, 'out.open (..)' ve 'std :: ofstream çıkışı (..)' sadece veri aktarımı için tanıtıcıyı açar. Büyük bir dosya açabilir ve hafızayı gerçekten okuyamazsanız, hafıza hakkında endişelenmenize gerek kalmaz. –

+0

Teşekkürler bir ton beyler! Cevap veren herkesi dahil! – ked

2

Akışınızı ek olarak açın, dosyanın sonuna yazılan yeni bir metin yazılır.

+0

Bu, en ayrıntılı cevaplar olmasa da, onu reddetmeye gerek yok, tamamen doğru ve eksiksiz. – Blindy

+0

Yeni olmak, kodun kendisini görmeye ihtiyacım var, ama yine de teşekkür edildi! – ked

5

kullanarak dosyayı açın basitçe ekleme yapılması için duruyor app modda ((dosya akışı üzerinden açılımı) ofstream ile bir dosyayı açmak).

#include <fstream> 
using namespace std; 

int main() { 
    ofstream fileOUT("filename.txt", ios::app); // open filename.txt in append mode 

    fileOUT << "some stuff" << endl; // append "some stuff" to the end of the file 

    fileOUT.close(); // close the file 
    return 0; 
} 
2

Umarız bu sizin bütün kodunuz değildir, çünkü eğer varsa, bununla ilgili bir sürü sorun var. Eğer bir dosyaya yazmak istiyorum

yolu şuna benzer:

#include <fstream> 
#include <string> 

// main is never void 
int main() 
{ 
    std::string message = "Hello world!"; 

    // std::ios::out gives us an output filestream 
    // and std::ios::app appends to the file. 
    std::fstream file("myfile.txt", std::ios::out | std::ios::app); 
    file << message << std::endl; 
    file.close(); 

    return 0; 
} 
+1

Haha, endişelenmeyin öyle değil. Sadece dosya bitine yazı yazdım, gerisi kalan 200 çizgi ... şimdiye kadar – ked