C++ 使用分隔符结束用户输入的循环

C++ 使用分隔符结束用户输入的循环,c++,C++,我想在不知道大小的情况下创建数组,这只取决于用户输入。 诀窍是我从用户那里得到的唯一输入是数组的原始数据,例如1 2 3 4 5。 我的第一个想法是创建一个循环来收集数据并对它们进行计数,直到找到某个分隔符为止。但我不知道怎么做,这可能吗? 有什么想法吗?一种方法是: std::vector<int> data; std::copy(std::istream_iterator<int>(std::cin), {}, std::back_inserter

我想在不知道大小的情况下创建数组,这只取决于用户输入。 诀窍是我从用户那里得到的唯一输入是数组的原始数据,例如1 2 3 4 5。 我的第一个想法是创建一个循环来收集数据并对它们进行计数,直到找到某个分隔符为止。但我不知道怎么做,这可能吗? 有什么想法吗?

一种方法是:

std::vector<int> data;
std::copy(std::istream_iterator<int>(std::cin), {},
          std::back_inserter(data));
std::矢量数据;
std::copy(std::istream_迭代器(std::cin),{},
标准::反向插入器(数据);
其他:

std::vector<int> data;
int x;
while (std::cin >> x) {
    data.push_back(x);
}
std::矢量数据;
int x;
而(标准::cin>>x){
数据。推回(x);
}
根据需求,还有其他方法

如果数据以单行形式提供,则:

std::vector<int> data;
std::string line;
if (std::getline(std::cin, line)) {
    std::copy(std::istream_iterator<int>(std::istringstream(line), {},
              std::back_inserter(data));
}
std::矢量数据;
std::字符串行;
if(std::getline(std::cin,line)){
std::copy(std::istream_迭代器)(std::istringstream(line),{},
标准::反向插入器(数据);
}

您可以使用
EOF
。很抱歉没有指定。输入是从控制台输入的,所以我想标准分隔符应该是“\n”。我可以为while/if语句创建一个变量来检查字符是int还是新行字符吗?输入一个字符串并使用行尾或字符串结尾。可以搜索基本内容。数组有一个(编译时间)固定大小。您可能希望使用
std::vector
来代替。在第二个版本中,除int number之外的所有内容都将中断循环,对吗?有没有一种方法可以使用动态数组和指针来实现这一点?