Cin与空间问题的整数

时间:2016-02-11 12:35:06

标签: c++ c++11 vector operators

vector<int> var;
    int numb;
    for(;;){
        cin>>numb;
        var.push_back(numb);
        if(numb!='\n'){
            break;
        }}
    insertionSort(var);
    for(int i=0;i<var.size();i++){
        cout<<var[i]<<" ";
    }
}

当我输入例如1 2 3,当我按下Enter键时它只取第一个值。任何解决方案?

2 个答案:

答案 0 :(得分:2)

您可以使用以下方式为标准输入使用迭代器

#include <iostream>
#include <vector>
#include <iterator>

int main() 
{
    std::vector<int> var( std::istream_iterator<int>( std::cin ),
                          std::istream_iterator<int>() );

    for ( int x : var ) std::cout << x << ' ';
    std::cout << std::endl;

    return 0;
}

或者您可以使用像这样的循环

int numb;

while ( cin >> numb ) var.push( numb );

至于你的代码,你不能像你使用的那样阅读新的行字符。新行字符是当操作符&lt;&lt;&lt;使用。

答案 1 :(得分:0)

你可以使用cin&gt;&gt; a&gt;&gt; b&gt;&gt; C;在这种情况下,但简单地说,使用cin只会读入一个变量。如果你需要读取多个变量,那么更好的选择是读取一个字符串并从中提取它们。