C++问题,CString 类型 字符 想要去掉前三个字节,把剩下的字节转化成INT型,如何实现

我有个函数返回值是串口号,返回COM1COM2COM3....COM16....我想要把返回值转化成数字,去掉COM三字,获得1,2,3,。。。。16等CStringns... 我有个函数 返回值是串口号,返回COM1 COM2 COM3....COM16....
我想要把返回值转化成数字,去掉COM三字,获得1,2,3,。。。。16等

CString ns = s.Right(1); ;
int n = _wtoi(ns);//n就是数字了。
用这个办法只能获得最后一个数字,COM9以上就无效

或者说如何将CString类型移掉左边三位,把剩下的值转化成int型。
少打了一行
CString s = m_comnum;
CString ns = s.Right(1); ;
int n = _wtoi(ns);//n就是数字了。
展开
 我来答
langpp1
2014-09-30 · TA获得超过389个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:133万
展开全部
CString ns = s.Mid(3);//Mid设置开始位置,第二参数是个数,默认时为字符串结束。
int n = _wtoi(ns);//n就是数字了
kaixingui2012
2014-09-30 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6454万
展开全部
CString ns ;

int n=atoi( ns.c_str()+3 ) ;
追问
error C2039: “c_str”: 不是“ATL::CStringT”的成员
追答

刚查了一下,还是用Mid函数吧,c_str()是C++string类的成员函数

我写了一个测试程序,你看一下

int ston( CString m_comnum )
{
CString s = m_comnum;
CString ns = s.Mid(3); 
int n = atoi( (LPCTSTR) ns );
return n;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
CString str1("COM1");
CString str2("COM12");
cout << "n1=" << ston( str1 ) << endl ;
cout << "n2=" << ston( str2 ) << endl ;

return nRetCode;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4bb5a29
2014-09-30 · 超过12用户采纳过TA的回答
知道答主
回答量:14
采纳率:0%
帮助的人:12.3万
展开全部
_wtoi(ns.Mid(3));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式