繁体   English   中英

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

[英]How to put digits of an integer in a vector in C++

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

可以这样做:

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());

我发现的最简单的方法是这样的:

std::vector<int> res;

int c;
std::cin >> c;

while(c>0)

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

我不明白为什么人们会建议这样的解决方案,例如当您想要的只是一个数字一个数字地来回转换为int时……对于用户以十进制表示的数字。

要将"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');
}

或者,如果您更喜欢使用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。

活生生的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM