我的运动有问题。我必须提供一些数字,程序将按相反的顺序显示它们,但不会显示最后输入的数字。

#include <iostream>
#include <list>
#include <cstdio>

using namespace std;

list <int> lista;

int main() {
    int liczba;
    while ((cin >> liczba) &&(getchar()!='\n')) {
        lista.push_front(liczba);
    }
    for(list<int>::iterator i=lista.begin();i != lista.end(); ++i)
        cout<<*i<<" ";

    return 0;
}


std::vector也是一样

最佳答案

输入最后一个数字并按Enter后,\n将被添加到流中,而getchar()将其拾取。但是您的条件失败了,因此在读取最后一个值时将不会进入循环。您可能需要另外测试std::cin,然后附加数字。

while ((cin >> liczba) &&(getchar()!='\n')) {
    lista.push_front(liczba);
}
if(cin)
    lista.push_front(liczba); //for the last item.

09-25 20:42