这是问题所在。 我有一个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)
答案 0 :(得分:0)
如果您想要向量添加项目,直到没有更多输入(或直到输入标记值),则可以使用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);
}