2016-04-02 24 views
0

İki dizeyi almak için birden çok getline(cin, string) çağrıları kullanıyorum; ancak kod ikinci aramayı atlıyor ve sadece ilkini kullanıyor.Birden çok satır okumak için birden fazla getline çağrı kullanma

for (int i = 0; i < 2; ++i) 
{ 
    if (i == 0) 
    { 
     cout << "Please enter string A: " << endl; 
     getline(cin, stringA); 
    } 

    if (i == 1) 
    { 
     cout << "Please enter string B: " << endl; 
     cin.ignore(); 
     getline(cin, stringB); 
    } 
} 

Nasıl bu çoklu getline'ın işlemek için değiştirebilirim() çağrıları? Verilen kodu ile kötü davranışı yeniden oluşturmaya

enter image description here

cevap

0

edilemiyor. Hata başka bir yerde olabilir.

Ne olursa olsun, kod çok daha basit olabilir ve bu diğer sorunları çözmek olabilir:

cout << "Please enter string A: " << endl; 
getline(cin, stringA); 
cout << "Please enter string B: " << endl; 
cin.ignore(); 
getline(cin, stringB); 

for döngü Eğer parametreler küçük farklar olan tekrar aynı kodu tekrar ederek çoğaltılamaz kodunu ortadan kaldırmak için izin verir. Çoğaltılamaz kod yoktur, yani for burada sizin için hiçbir şey yapmaz.

cin.ignore() hattının hedefinin ne olduğundan emin değilsiniz. İkinci giriş satırının ilk karakterini atar. Eğer istediğin buysa, olmasa da, tekrar düşünün.

İlgili konular