大家好,我是Miko,好久没见面了。最近事物繁忙,也没学到太多技术,所以断了几次,不过没关系,现在继续。
这次,我们要学习的是c++如何将string类型的数据转换成int型数据?这也是我在一次上机任务遇到的问题,想了好久,最后终于解决了,所以把方法分享给大家吧。
有时候,我们在字符串截取的时候,经常会遇到string类型的数据,但是我们有时候需要截取的数据往往是int型的,而我们恰恰需要这个int型的数据去完成一些操作,比如判断奇数还是偶数,但是我们又不能直接操作这种string类型的数据。所以我们需要转换。
首先,因为我暂时不知道如何一步就把string类型转换为int型,所以退而求其次,我们进行两步转换。首先,把string型转换成char*型,接着再把char*型数据转换成int型。好了,接下来是转换的方法:
第一步,我们需要使用string类对象的成员函数c_str(),它的原型是constchar*c_str();说明:c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式.
注意:一定要使用strcpy()函数等来操作方法c_str()返回的指针。比如:最好不要这样:char*c;strings=;c=s.c_str();//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理应该这样用:charc[20];strings=;strcpy(c,s.c_str());这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作。再举个例子:c_str()以char*形式传回string内含字符串如果一个函数要求char*参数,可以使用c_str()方法:strings=HelloWorld!;printf(%s,s.c_str());//输出HelloWorld!
这样,我们的第一步转换就完成了。
第二步的转换采用atio()函数进行,它的原型是intatoi(constchar*nptr);说明:参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符\0)字符时停止转换,返回整型数。否则,返回零。
举个例子:
#includestdlib.h
#includestdio.h
intmain()
{
chara[]=-;
charb[]=;
intc;
c=atoi(a)+atoi(b);
printf(c=%d\n,c);
return0;
}
执行结果:
c=23
好了,第二步转换也完成了。接下来,我再写个例子总结一下如何将string类型的数据转换成int型数据。
intmain()
{
inta;//int型数据
charb[20];//char*型数据
strings=;//string型数据
strcpy(b,s.c_str());//string转换char*
a=atio(b);//char*转换int
return0;
}
讲解完毕,你学会了吗?
最好的白癜风医院是哪个白癜风治疗多少钱