如有字符串:1-abcdefg,如何把1截取出来并转成int,谢谢

解决方案 »

  1.   

    使用MFC的CString的Left,Right,或Mid函数都可以
    或者使用C++的substr截取
    然后用atoi转换
      

  2.   

    你是以“-”作为分隔符吗?
    可以查找字符串,从这个字符串中查找“-”前面的字符串,然后把这串字符串转化为int
      

  3.   

    如果格式都一样的,那可以试这样.char a[] = "1-abcdefg";
    int i = *(&a[0]) - 48 //i等于1
      

  4.   

    CString ts = "1-abcdefg";
    TCHAR tc = ts.GetAt(0);
    int ti = (int)tc - 48;
      

  5.   

    其实有很多方法
    1、若你的数字始终在左边,直接atoi或atol即可,因为这两个函数本身就具有判断,会先剔除字符串中的空格,然后处理从左至右的数字,若第一个字符就不是数字(非空格)的话,返回0
    如int n=atoi("   234");结果n=234;
    2、若你的数字在字符串的中间,那只能用strchr先找到第一个数字了,再获取

    const char *str="asdf123sad;fk";
    int youratoi(const char *pstr)
    {
    int nResult=0;
    char *p=NULL;
    for(int i=0;i<=9;i++)
    {
    p=strchr(pstr,'0'+i);
    if( p )
    break;
    }
    if(p) nResult=atoi(p);
    return nResult;
    }
      

  6.   


    TCHAR buf[] = _T("1-abcdefg");
    TCHAR str[10] ={0};
    int d = 0;
    sscanf(buf, "%d-%s", &d, str); _stprintf(str, _T("%d"), d);
    AfxMessageBox(str);
      

  7.   

    用atoi函数即可。atoi("123abc") = 123
    atoi("22") = 22
      

  8.   

    先用GetAt取字符,再用atoi转换成整型
      

  9.   


    CString strCource = _T("1-abcdefg");
    int res = _ttoi(strSource.Left(strSource.Find(_T("-"))));
      

  10.   

    呵呵~估计LZ的问题没这么简单,要看LZ的具体情况了