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就是数字了。 展开
我想要把返回值转化成数字,去掉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就是数字了。 展开
展开全部
CString ns ;
int n=atoi( ns.c_str()+3 ) ;
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
_wtoi(ns.Mid(3));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询