我想从COM1,COM2,COM3等等字符串中提取1.2.3等等数字,请问用VC有什么比较快点的方法吗?

解决方案 »

  1.   

    //那就别用正则表达式了,麻烦
    CString str = "COM1";
    str.Replace("COM", "");
    int i = atoi(str.GetBuffer(0));
    str.ReleaseBuffer();
      

  2.   

    实际上就是按照既定的格式寻找需要的内容,给你个入门教程。
    http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
    找一个boost库,然后按照你的需求编写正则表达式,然后调用boost接口实现功能即可。
      

  3.   

    当然,你的字符串要是都是COM1,COM2,COM3....这样的,最好直接查找。若是还有不规律的情况,最好考虑正则。
      

  4.   

    CString str="COM1";
    str=str.Right(str.GetLength()-3);
    int i=atoi(str);
      

  5.   

    BOOL ExtractInteger(LPCTSTR lpszText, LONG *pnValue)
    {
        LONG nValue=0;
        LPSTR pCursor=(LPCTSTR)lpszText);
        TCHAR ch;
        while(ch=*pCursor)
        {
            if(ch>=TEXT('0') && ch<=TEXT('9')) 
            {
               nValue=atol(pCursor);
               if(NULL!=pnValue) *pnValue=nValue;
               return TRUE;
            }
            if(ch&0x80) pCursor++;
            pCursor++;
        }
        return FALSE;
    }