c++ 分割任意一个整数,谁有好的方法??


#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <math.h>
#define le 10
using namespace std;
string getString(const int a);
unsigned stringToInt(string str);
unsigned ts(string str,unsigned maxI);
unsigned getInt();
int getLen(int b);
int getChar_int(int a);
bool isDigit(string c);
vector<int> splitInt(int a);
unsigned getInt();
//void operatorVector(){
// vector<int> v;
// if(!v.empty())
// v.clear();
// for(int i = 0;i <le;i++ ){
// v.push_back(i);
// }
// std::string str;
// for(int i = 0;i < v.size();i++){
// int b = v[i];
// std::string ss;
// ss = getString(b);
// if(str.empty()){
// str = ss;
// }else{
// str +=","+ss;
// }
// }
// cout<<str;
//
//}
///*
// * 第一种方法int转化为string类型
// */
//string getString(const int a){
// std::stringstream str;
// str<<a;
// return str.str();
//}
///*
// * 第二种方法
// */
// string intToString(const int a){
// int b = a;
// int *t = &b;
// cout<<*t<<endl;
// std::string s;
// //s = t;
// return s;
// }
void printSplit(){
vector<int> v = splitInt(getInt());
for(int i = 0;i < v.size();i++){
cout<<v[i]<<endl;
}
}
/*
* 分割任意一个整数
*/
vector<int> splitInt(int a){
vector<int> v;
int len = getLen(a);
cout<<"长度:"<<len<<endl;
for(int i = len;i >= 1;i--){
double j = pow(10,i-1);
if(i == len){
v.push_back((int)(a/j));
}else{
v.push_back((a/((int)j))%10);
}
}
return v;
}
//得到一个整数
unsigned getInt(){
unsigned maxI = (2 << 31)-1;
string str;
cout<<"请输入任意一个整数:"<<endl;
cin>>str;
return ts(str,maxI);

}
unsigned ts(string str,unsigned maxI){
unsigned i;
if(!isDigit(str)){
return 0;//不是数字默认为0;
}
i = stringToInt(str);//将string类型转化为int型
return i;
}
/*
* 判断一个数有多少位
*/
int getLen(int b){
int len = 0;
for(int i = 10;i >=1;i--){//i代表几位数
int j = (int)pow(10,i-1);
if(b/j != 0){
len = i;
break;
}
}
return len;
}
/*
* 判断是否为数字
*/
bool isDigit(string c){
bool flag = true;
for(int i = 0;i <c.length();i++){
char t = c[i];
if(t > '9' || t < '0'){
flag = false;
break;
}
}
return flag;
}
/*
* 字符串转化为int
*/
unsigned stringToInt(string str){
char ch[str.length()];
unsigned ii = 0;
int flag = str.length();
for(int i = str.length()-1;i >= 0;i--){
double tt = pow(10,flag - i-1);
ch[i] = str[i];
if(ii == 0){
ii = ch[i];
ii = getChar_int(ii);
ii = ii * tt;
}else{
unsigned is = ch[i];
is = getChar_int(is);
ii += is * tt;
}
}
return ii;
}
/*
* 把数字转回为原先字符数字型
*/
int getChar_int(int a){
switch (a) {
case 49:
a = 1;
break;
case 50:
a = 2;
break;
case 51:
a = 3;
break;
case 52:
a = 4;
break;
case 53:
a = 5;
break;
case 54:
a = 6;
break;
case 55:
a = 7;
break;
case 56:
a = 8;
break;
case 57:
a = 9;
break;
default:
a = 0;
break;
}
return a;
}
//int main(){
// //强制转换对转换指针本身是不变的,只是产生一个临时的新类型的指针
// printSplit();
// return 0;
//}


哪位有好的方法,分割任意一个整数。。。。。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值