[英]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::istringstream
和operator >>
用法:
#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.