请赐教

各位高手请赐教
#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;
}

------解决方案--------------------
引用:
在C++里面怎么把char类型的指针和string联系起来哈


lz你在main()把 s 定义为 string 型数据,而 pt 却是 char * 类型,当然不能进行赋值了

引用:
 pt=s;应改为pt=s.c_str();

按赵老师说的改了也是不行的啊






------解决方案--------------------
参考4楼。
------解决方案--------------------
摒弃cin、cout、string
使用scanf,printf,char []