C++ Dosya referans işlemleri Ücreti ile yaptırılacaktır.

Başlatan sefaturk77, 15 Mayıs 2017 - 01:35:01

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sefaturk77

Konunun içeriğini değiştiriyorum ilk konuda yanlış paylaşmışım.
elimde bir klasör var ilk class la bu klasörün yolunu belirtiyorum.
string ad; cin>>ad; ifstream dosya(ad.c_str());
şimdi baska bir class ile bu dosya yolunun belirttiğim text dosyası içindeki metinden kelime aratıcam
bu kelimeyi program bize soracak ve bulacak ben burada referans islemi yapamıyorum yani belirttigim dosyaya diger class ile erişim yapamıyorum yardımcı olurmusunuz teşekkürler.

erdemakin09

Sorunun pointerlarla alakalı. Debug yapmanı tavsiye ederim. Yada sana gönderdiğim kodu ve linki incele.

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

string getLine(ifstream& stream)
{
    return getline(stream,line);
}

int main()
{
  ifstream dosya;
  string allText;
  string aranacakKelime = "BlaBla";
  dosya.open("deneme.txt");
 
  if(dosya.is_open())
  {
      while(dosya.good())
      {
          allText += getLine(dosya);
      }
      dosya.close();
  }
 
  if (allText.find(aranacakKelime) != std::string::npos) {
    std::cout << "Bulduk" <<endl;
}
 
}


Şu kodun işini görmesi lazım.

Daha detaylı kaynaklar için ingilizce bakmanı öneririm.
http://www.cplusplus.com/forum/beginner/112478/
buradki örneği incelemeni tavsie ederim.
Her Can Bir Gün Ölümü Tadacaktır!

sefaturk77

#2
Alıntı yapılan: erdemakin09 - 15 Mayıs 2017 - 15:29:19
Sorunun pointerlarla alakalı. Debug yapmanı tavsiye ederim. Yada sana gönderdiğim kodu ve linki incele.

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

string getLine(ifstream& stream)
{
    return getline(stream,line);
}

int main()
{
  ifstream dosya;
  string allText;
  string aranacakKelime = "BlaBla";
  dosya.open("deneme.txt");
 
  if(dosya.is_open())
  {
      while(dosya.good())
      {
          allText += getLine(dosya);
      }
      dosya.close();
  }
 
  if (allText.find(aranacakKelime) != std::string::npos) {
    std::cout << "Bulduk" <<endl;
}
 
}


Şu kodun işini görmesi lazım.

Daha detaylı kaynaklar için ingilizce bakmanı öneririm.
http://www.cplusplus.com/forum/beginner/112478/
buradki örneği incelemeni tavsie ederim.
Hocam yanlış anlattım heralde benim sorunum farklı şöyle ki dedigim gibi ilk classla var olan dosyaya dosyanın ismini girerek erişiyorum daha sonra ki classla ise bu erişdiğim dosyadan kelime ismi yazıp aratıyorum söyle bu istenilenleri program benden isticek ben kodda dosya veya kelime belirtmiyecegim


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 16 Mayıs 2017 - 00:01:57

Şöyle bi mantık düşünüyorum pointer ile dosyayı tanımlasam daha sonra içersinde kelime aramak için o dosyanın adresi ile erişim sağlayabilicegimi ama sadece düşünüyorum icraat yok :) yardımcı olan yok mu

erdemakin09

Anlattığın biraz karmaşık geldi kafamda deli sorular öncelikle neden iki class yazıyorsun ki.

Doğru anladıysam ilk classla dosyayı açmayı ikinci classla ise ilk classın açtığı dosyada arama yapmayı istiyorsun fakat bu bana pek mümkün gelmedi. Çünkü ilk class dosyayı açtı ve dosyanın içinde ikinci class erişmek istediği zaman ona dur bakalım diyecektir (Açık olan dosyayı silememek gibi düşünebilirsin Hazırda bir process dosyayı açmış kullanırken silme processi dosyayı silemez çünkü izin vermez ilk process). İlk classta dosyayı kapatırsan bu sefer ikinci de yine açman gerekir ki buda çok saçma olacaktır. Fazla maliyet gereksiz büyük program. Yada orada açtığın ifstream değerini diğer classa atarsın ama yine pointer hatası verebilir. Buda çok gereksiz olacaktır.

Bu işi tek classla yapabilirsin en akıl karı o olur. Tek classta gerekli tanımlamaları yapar fonksiyonlarla dosyayı açar diğer fonksiyonla okursun ki doğru olanda bana göre budur.

Ama şimdi çokta yanlış yönlendirmek istemiyorum. İstediğin şeyi hiç kullanmadım ve yapmadım. Fazla gereksiz geldi bana ama programın arka planını bilmiyorum. C++ bilgimde bunu cevaplamaya yetmiyor. İstiyorsan tek class ile yap yada bekle birileri cevap verip daha iyi yönlendirebilir.
Her Can Bir Gün Ölümü Tadacaktır!