写的不够简练
字符串和数值类型的转换不够圆润
除了sstream头文件下的stringstream方法还有更加简单的利用ascall码值进行转换的方法
不过就当学习了一些处理string的方法吧
涉及到string.replace string.find string.substr
代码如下
#include <iostream>
#include <string>
#include <sstream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
// string s = "0-670-82162-0";
string s;
cin>>s;
int pos1=0;
int pos2=0;
string ss;
while(s.find("-",pos1)!=string::npos){
pos1=s.find("-",pos1);
ss+=s.substr(pos2,pos1-pos2);
pos1=pos1+1;
pos2=pos1;
}
int sum=0;
for(int i=1;i<=9;i++){
int x;
string c=ss.substr(i-1,1);
stringstream num(c);
num>>x;
sum+=x*i;
num.str("");
}
int m=sum%11;
stringstream sstr;
sstr<<m;
string endm = sstr.str();
//endm m的字符类型
int endnum;
string endchar=s.substr(12,1);
stringstream num(endchar);
num>>endnum;
//endnum s的字符类型
if(m<10){
if(m==endnum){
cout<<"Right";
}else{
string r=s.replace(12,1,endm);
cout<<r;
}
}
if(m==10){
if(endchar=="X"){
cout<<"Right";
}else{
string r=s.replace(12,1,"X");
cout<<r;
}
}
return 0;
}