
[英]Recursive function, which writes integer digits in an array(vector) in 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.