Soru Tam bir giriş çizgisini okuma


Kullanıcının konsola girdiği girişi saklamaya çalışıyorum. bu yüzden "enter" ve herhangi bir beyaz boşluk eklemem gerekir.

Fakat cin İlk boşluktan sonra bana giriş yapmayı bıraktı.

CTRL + Z basılıncaya kadar tüm satırları okumak için bir yolu var mı?


20
2018-05-04 11:49


Menşei


Olası kopya. Lütfen bak stackoverflow.com/questions/2765462/how-to-cin-space-in-c - mkaes
Arama yaparken bu yazıyı bulamadım. Yaparsam, başka bir tane gönderirim ^^ üzgünüm, bir dahaki sefere daha derine bakmayı deneyeceğim - Katia


Cevaplar:


CTRL + Z basılı veya başka bir şey kadar readLines gibi bir yolu var mı?

Evet, tam olarak böyle, ücretsiz kullanarak std::getline işlev (değil  istream aynı adı taşıyan yöntem!):

string line;

while (getline(cin, line)) {
    // do something with the line
}

Bu, girdinin sonuna ulaşılana kadar satırlardan (yeni satır bitmeden boşlukları da dahil olmak üzere) okur. cin bir hata sinyali verir.


41
2018-05-04 11:51



Yani girdi, satırın içerdiği CTRL + Z no mater ile sona eren 5 satır gibi olsaydı, satır değişkenine gider? Daha önce denediğimde, bir dize değişkeni bir boşluktan sonra saklanmıyor .. cuz, ben cin değil getline mı kullanıyordum? - Katia
Sadece @ Patia getline tüm satırı okur. Bir dizeyi cin >> line o zaman sadece ilk boşluklara kadar okur. - Konrad Rudolph
Şimdi anladım, bir milyon ... - Katia


#include <iostream>
#include <string>
using namespace std;

int main() 
    string s;
    while( getline( cin, s ) ) {
       // do something with s
    }
}

3
2018-05-04 11:52





Programım için, ctrl + x'e basılana kadar her bir giriş karakterini okuyan aşağıdaki kodları yazdım. İşte kod:

char a;
string b;
while (a != 24)
{
cin.get(a);
b=b+a;
}
cout << b;

Ctrl + z için şunu girin:

char a;
string b;
while (a != 26)
{
cin.get(a);
b=b+a;
}
cout << b;

Ctr + z çözümünün bir UNIX makinesindeyken çalıştığını ve ctrl + z'nin programı sonlandırdığını doğrulayamıyorum. Bununla birlikte, pencereler için çalışabilir veya çalışmayabilir; Kendin görmelisin.


0
2017-07-20 03:07



Kendinizi tampon taşmaları için ayarlıyorsunuz, bu hiç de güvenli değil - thecoshman


#include <string>
#include <iostream>

int main()
{

    std::cout << "enter your name: ";

    std::string name;

    std::getline(std::cin, name);

    return 0;

}

-1
2017-08-01 16:35



Yığın Taşması'na Hoş Geldiniz! Cevabınız için teşekkür etsek de, diğer cevapların üstüne ek bir değer katsaydı daha iyi olurdu. Bu durumda, başka bir kullanıcı zaten bu çözümü yayınladığından, cevabınız ek bir değer sağlamamaktadır. Eğer önceki bir cevap size yardımcı olduysa, aynı bilgiyi tekrarlamak yerine oy vermelisiniz. - Toby Speight


C ++ uygulamasında getline işlevini kullanabilirsiniz.

#include<iostream>
using namespace std;
int main()
{
    char msg[100];
    cin.getline(msg,100);
    return 0;
}

-1
2017-11-28 14:34