Şimdi Ara

C++'da String Hatalı Çalışıyor

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
7
Cevap
0
Favori
591
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • #include <iostream> 
    #include <string>
    using namespace std;
    /////////////////////////////////
    class calisan
    {
    string isim;
    int numara;
    public:
    calisan () {isim=" ";numara=0;}
    void kayit()
    {
    cout<<"Numarayi Giriniz:";
    cin>>numara;
    cout<<endl<<"Ismi Giriniz:";
    getline(cin,isim);
    }
    void goster()
    {
    cout<<"Numara:"<<numara<<endl<<"Isim:"<<isim;
    }
    };


    /////////////////////////////////
    int main()
    {
    calisan c1,c2,c3;
    c1.kayit();
    c2.kayit();
    c3.kayit();
    c1.goster();
    c2.goster();
    c3.goster();

    cout<<endl;
    return 0;
    }



    Yukarıdaki kodda sınıf içine bir string bir de integer veri yerleştirilmesi gerekli. Fakat Numarayı rahatça yerleştiriyorum "Enter"a basıyorum fakat string'e hiçbirşey yazılmamış ve enter'a basılmış gibi algılıyor , boş geçiyor. Derleyici derliyor sorun yok fakat çalışırken hatalı çalışıyor. Nerede hata yaptım acaba ?
    Derleyici: VS 2008







  • sorunu çözmek için getline dan önce cin.ignore(256, '\n'); kullanılıyormuş
    https://forum.ceviz.net/c-c/98621-cin-den-sonra-cingetline-deger-alamama-sorunu.html
  • Senelerdir tam olarak anlayamadığım buffer problemi. Numarayı aldıktan cin.ignore(); yaz. Parametrelere gerek yok.
  • cin.ignore(); kullanınca çalıştı. Hiç anlamış değilim. İşin ilginci kitabdaki örnek kodlar bile çalışmıyor
  • quote:

    Orijinalden alıntı: elektro_gadget

    Senelerdir tam olarak anlayamadığım buffer problemi. Numarayı aldıktan cin.ignore(); yaz. Parametrelere gerek yok.

    +1 al benden de o kadar. bende çözüm olarak ard arda iki kez getline yazıyorum senelerdir :)
  • fflush(stdin);
    getline(cin, isim);

    olarakta çalışır :)

    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.