未知的大小矢量输入

时间:2016-05-25 23:13:44

标签: c++ c++11 vector input

这是问题所在。 我有一个int的向量,用户应该输入它的元素,只要他或她想要。然后,该向量被传递给一个函数,该函数无论出于何种原因计算它的大小。有没有办法这样做?我在互联网海岸找到了一些代码:

std::vector<int> vec;

std::string buffer = "";

std::cout << "Enter numbers. "
          << "After you finish, enter newline" << std::endl;

do {
    std::getline(std::cin, buffer);
    if (buffer.size() > 0) {
        vec.push_back(atoi(buffer.c_str())); //stoi was not declared =(
    }
} while (buffer != "");

foo(vec);
....
void foo(std::vector<int> &input)
{
    for (const int &i : input)
        {
            std::cout << i << endl;
        }
}

但是这段代码不能正常运行:我选择输入数字而它什么都不做。不知道它有什么问题。 (启用了c ++ 11)

1 个答案:

答案 0 :(得分:0)

如果您想要向量添加项目,直到没有更多输入(或直到输入标记值),则可以使用std::istringstreamoperator >>

#include <string>
#include <vector>
#include <sstream>
#include <string>

int main()
{
    std::vector<int> vec;
    std::string buffer;
    int data;
    std::getline(std::cin, buffer);
    std::istringstream iss(buffer);
    while (iss >> data)
          vec.push_back(data);
    foo(vec);   
}

Live Example