cin.getline 在第一次输入后忽略第一个单词

时间:2021-01-25 10:42:01

标签: c++

我正在为学校工作 c++,只是无法理解为什么在我输入之后,它忽略了第一个单词。我已经尝试在这里找到解决方案,因为我看到了有关它的主题,但没有一个对我有帮助。 简单地说,只有第一个输入是可以的。所有其他的开头都缺少 1 个字。

代码如下:

void vozilo::Unos() {

// Marka vozila
cout << "Unesite marku vozila (do 50 karaktera): ";
markaVozila = new char[50];
cin.ignore();
cin.getline(markaVozila, 50);

// Broj sasije
cout << "Unesite broj sasije (do 20 karaktera): ";
brojSasije = new char[20];
cin.ignore();
cin.getline(brojSasije, 20);

cout << endl << endl; 
}

https://pastebin.com/hkLW77HX - 完整代码。

问题出在哪里problem

1 个答案:

答案 0 :(得分:0)

有必要在读取前使用 cin.ignore 使用 cin.get() 来清理缓冲区。

void vozilo::Unos() {
    // Marka vozila
    cout << "Unesite marku vozila (do 50 karaktera): ";
    markaVozila = new char[50];
    cin.ignore();
    cin.get(markaVozila, 50);

    // Broj sasije
    cout << "Unesite broj sasije (do 20 karaktera): ";
    brojSasije = new char[20];
    cin.ignore();
    cin.get(brojSasije, 50);

    cout << endl << endl;
}