将用户输入数字转换为整数向量(C ++)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将用户输入数字转换为整数向量(C ++)相关的知识,希望对你有一定的参考价值。
我希望我的程序要求用户输入任何数字,然后将其存储到一个向量中,其中每个数字都分配给一个单独的向量索引:
input: 142
output vector: [1, 4, 2]
我试过这个:
int main()
{
std::vector<int> v;
int number;
cin >> number;
for(unsigned int i = 100; i > 0; i/=10)
{
v.push_back(number/i);
number -= (number/i)*i;
}
for(size_t i = 0; i < v.size(); ++i)
{
std::cout<<v[i]<<std::endl;
}
}
有用。但是当输入长度未知时我该怎么办?
使用简单的std::string
和每个char
(实际上是整数)的字符串转换为整数,如下所示:SEE LIVE HERE
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<int> v;
std::string number = "123456789987654321";
for(auto& Integer: number)
v.emplace_back(static_cast<int>(Integer - '0'));
for(const auto& it: v) std::cout << it << " ";
}
输出:
1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
如果输入不需要的字符/用户输入(例如一些负数甚至这个:+-1234567
),你可以使用try-catch
。 try
将char转换为int
,否则跳过catch
块如下。 SEE LIVE HERE
#include <iostream>
#include <vector>
#include <string>
#include <exception>
int main()
{
std::vector<int> v;
std::string number = "+-1234567";
for(auto& Integer: number)
{
std::string Char(1, Integer); // convert to string
try { v.emplace_back(std::stoi(Char)); }
catch(...) { continue; } // any case of exceptions
/* or using much simpler std::isdigit from <cctype>
by which conversion to std::string and try-catch can be avoided.
if(std::isdigit(Integer))
v.emplace_back(static_cast<int>(Integer - '0'));
*/
}
for(const auto& it: v) std::cout << it << " ";
}
输出:
1 2 3 4 5 6 7
Edte:根据@Aconcagua建议,包括与std::isdigit
的解决方案
while(number) {
v.push_back(number%10);
number /= 10;
}
std::reverse(v.begin(), v.end());
改变qazxsw poi初始化qazxsw poi而不是for
。重写的unsigned int i = number
声明将是:
unsigned int i = 100
我想留下数字和for
是一个选项,你可以做到以下几点:
for(unsigned int i = number; i > 0; i/=10)
使用模数运算符,您只需取最后一位数字并将其插入std::deque
的前面。然后你用int main()
{
std::deque<int> v;
int number;
cin >> number;
while(number != 0)
{
v.push_front(number%10);
number = number/10;
}
for(size_t i = 0; i < v.size(); ++i)
{
std::cout<<v[i]<<std::endl;
}
return 0;
}
“切断”那个数字。
我使用了一个双端队,因为deque
。
以上是关于将用户输入数字转换为整数向量(C ++)的主要内容,如果未能解决你的问题,请参考以下文章
结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url