如果用户输入一个像4210这样的整数,如何将该整数的每个数字放在C ++中的一个向量中?
答案 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。
答案 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');
}