繁体   English   中英

未知大小的向量输入

[英]Unknown size vector input

这是问题。 我有一个整数向量,用户应该输入他或她想要的元素。 然后,这个向量被传递给一个函数,无论出于何种原因,它都会计算它的大小。 有什么办法吗? 我在网上找到了一些代码:

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 启用)

如果您想向向量添加项直到没有更多输入(或直到输入std::istringstream值),可以使用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);   
}

现场示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM