输入为0(零)之前的数字序列

时间:2013-03-20 18:59:16

标签: c++ console

我不知道如何制作以下内容。 我想输入一个数字序列,当我输入0时,停止cin(就像我点击Enter)并自动cout那些(数字%2 == 0)在另一行上的数字。是否可以完成功能? 我希望你理解我:)。

例如我正在输入123456785435430(我已输入'0',因此cin会立即停止并告诉我2 4 6 8 4 4 3)

2 个答案:

答案 0 :(得分:1)

这是一个适用于给定分隔符的简单版本,

#include <iostream>
using namespace std;

string input_until_delimiter (char delimiter)
{

    string buffer = new string ();

    char c = delimiter;

    while ((c = get()) != delimiter) buffer += c;

    return buffer;

}

答案 1 :(得分:0)

你需要的东西是这样的:

char x;
std::vector<int> evens;
do {
    std::cin.get(x);
    int v = x - '0'; // int value
    if (v % 2 == 0 and v != 0)
        evens.push_back(v);
} while (x != '0');

for (std::vector<int>::iterator it = evens.begin(); it != evens.end(); ++it)
    std::cout << (*it) << " ";

以下是您练习的版本:

#include <vector>
#include <iostream>

void brc() {
    int x;
    std::cin >> x;
    if (x == 0) return;
    if (x % 2 == 0)
        std::cout << x << " ";
    brc();
}

int main() {
    brc();
    return 0;
}