请赐教
各位高手请赐教
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int verifyMsisdn(char *inMsisdn)
{char *p;
int cnt=0;
p=inMsisdn;
while(*p++)
cnt++;
if(cnt != 13) return 1;
p=inMsisdn;
for(;*p != '\0';p++)
if(!isdigit(*p)) return 2;
p=inMsisdn;
if(*p++ != 8) return 3;
else if(*p != 6) return 3;
else return 0;
}
int main()
{ string s;
cout<<"please input a string : "<<endl;
cin>>s;
char *pt;
pt=s;
int k;
k=verifyMsisdn(pt);
cout<<"the result is "<<k<<endl;
return 0;
}
------解决方案--------------------
pt=s;应改为pt=s.c_str();
------解决方案--------------------
char *pt;
pt=s;
not correct.
char *pt = new char[s.size()+1];
std::copy(s.begin(), s.end(), pt);
pt[s.size()] = '\0';
.....
delete[] pt;
------解决方案--------------------
这代码写得乱哄哄的,我觉得要这样改。
------解决方案--------------------
lz你在main()把 s 定义为 string 型数据,而 pt 却是 char * 类型,当然不能进行赋值了
按赵老师说的改了也是不行的啊
------解决方案--------------------
参考4楼。
------解决方案--------------------
摒弃cin、cout、string
使用scanf,printf,char []
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int verifyMsisdn(char *inMsisdn)
{char *p;
int cnt=0;
p=inMsisdn;
while(*p++)
cnt++;
if(cnt != 13) return 1;
p=inMsisdn;
for(;*p != '\0';p++)
if(!isdigit(*p)) return 2;
p=inMsisdn;
if(*p++ != 8) return 3;
else if(*p != 6) return 3;
else return 0;
}
int main()
{ string s;
cout<<"please input a string : "<<endl;
cin>>s;
char *pt;
pt=s;
int k;
k=verifyMsisdn(pt);
cout<<"the result is "<<k<<endl;
return 0;
}
------解决方案--------------------
pt=s;应改为pt=s.c_str();
------解决方案--------------------
char *pt;
pt=s;
not correct.
char *pt = new char[s.size()+1];
std::copy(s.begin(), s.end(), pt);
pt[s.size()] = '\0';
.....
delete[] pt;
------解决方案--------------------
这代码写得乱哄哄的,我觉得要这样改。
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int verifyMsisdn(char *inMsisdn)
{char *p;
int cnt=0;
p=inMsisdn;
while(*p++)
cnt++;
if(cnt != 13) return 1;
p=inMsisdn;
for(;*p != '\0';p++)
if(!isdigit(*p)) return 2;
p=inMsisdn;
if(*p++ != 8) return 3;
else if(*p != 6) return 3;
else return 0;
}
int main()
{ string s;
cout<<"please input a string : "<<endl;
cin>>s;
//char *pt;
char pt[200];
//pt=s;
//pt=s.c_str();
strcpy(pt,s.c_str()); //拷贝
int k;
k=verifyMsisdn(pt);
cout<<"the result is "<<k<<endl;
return 0;
}
------解决方案--------------------
lz你在main()把 s 定义为 string 型数据,而 pt 却是 char * 类型,当然不能进行赋值了
按赵老师说的改了也是不行的啊
------解决方案--------------------
参考4楼。
------解决方案--------------------
摒弃cin、cout、string
使用scanf,printf,char []