如何在C ++中将一个整数的数字放在一个向量中

时间:2014-04-02 17:28:33

标签: c++ vector integer digits

如果用户输入一个像4210这样的整数,如何将该整数的每个数字放在C ++中的一个向量中?

4 个答案:

答案 0 :(得分:7)

可以这样做:

std::vector<int> numbers;
int x;
std::cin >> x;
while(x>0)
{
   numbers.push_back(x%10);
   x/=10;
}

std::reverse(numbers.begin(), numbers.end());

答案 1 :(得分:2)

我找到的最简单的方法是:

std::vector<int> res;

int c;
std::cin >> c;

while(c>0)

    {
    res.insert(res.begin(),c%10);
    c/=10;
    }

答案 2 :(得分:0)

或者,如果您更喜欢使用std::string,可以使用:

std::vector<int> intVector;

int x;
std::cin >> x;

for (const auto digit : std::to_string(x)) {
    intVector.push_back(digit - '0');
}

这假设您的编译器可以使用C ++ 11。

Live example

答案 3 :(得分:0)

我不明白为什么人们会建议这样的解决方案来回转换为int,当你想要的只是数字时......用户用十进制表示的数字。 / p>

要将"4321"转换为std::vector<int>{4, 3, 2, 1},最简单的方法是:

std::string input;
std::cin >> input;

std::vector<int> vec;

for (char const c: input) {
    assert(c >= '0' and c <= '9' and "Non-digit character!");
    vec.push_back(c - '0');
}