2016-04-13 20 views
0

Fstream kullanarak bir dosyaya yazmaya çalışıyorum ama kodum çalışmıyor. Bana ne yapıyorum, yanlış mı yapıyorum?C++ içinde bir dosyaya yazma

void mem_test() 
    { 
      fstream filepointer; 
      string buffer; 

      if (filepointer.is_open()) 
      { 
        filepointer.open("test.t", ios::in | ios::out | ios::binary); 
        getline(filepointer, buffer); 
        getline(filepointer, buffer); 

        filepointer << "TEST!" << endl; 
      } 
      filepointer.close(); 
    } 

(okuma ve linux dosyayı yazmak için Perimssion) Dosyam test.t:

Example Line 1 
Example Line 2 
Example Line 3 
Example Line 4 

Teşekkür!

+6

ilk şey o Fark ettim ki, bir dosya açmaya çalışıyorsunuz _if zaten open_. Ve kod snippet'inizde, asla açık olmayacak. –

+0

@molbdnilo Hayır yapmamalısın. Bu basit bir "yazım hatası" Komutların sıralaması, yorumlarda onu işaret etmek ve kapatmak için oylama yoldur. Cevaplama, otomatik olarak silinebilmekten vazgeçirir – NathanOliver

+0

@NathanOliver Buna, bir ty yerine temel bir yanlış anlama denir. po, ama ben senin noktanı görüyorum. – molbdnilo

cevap

1

dosya akışı Henüz bir dosya açmadı çünkü her zaman blok yürütülmez if (açılış sonucunda bu durumda kodunuzu false dönecektir ilk if (filepointer.is_open()) denetimi yapmak gerek yok ilk etapta kontrol etmeye çalıştığınız şeyle çelişen dosya). yani if(filepointer.is_open()) kullanmak (Öyleyse, önce dosyayı açmak sonradan hata akışı durumunu kontrol

2

işaretleyerek dosya olması gerektiği, böylece aslında dosyayı açmadan önce açıksa:.

void mem_test() 
{ 
     fstream filepointer; 
     string buffer; 
     filepointer.open("test.t", ios::in | ios::out | ios::binary); 
     if (filepointer.is_open()) 
     { 
       getline(filepointer, buffer); 
       getline(filepointer, buffer); 
       filepointer << "TEST!" << endl; 
       filepointer.close(); 
     } 
}