LPCSTR sFileName =F:\1\0\20081126\106\2042410.V3 
我现在想取106这个值,注意:不能按位数来取,因为前边的数1 或者0有可能变为别的,只能按照‘\’来取,
同时,把取到的数据在转化为USHORT类型,谢谢

解决方案 »

  1.   

    这还不容易for(;;)数数不就可以了吗?
      

  2.   

    LPCSTR sFileName ="F:\\1\\0\\20081126\\106\\2042410.V3";
    char *pdest;
    int result1 = 0, result2 = 0;;
    for(int i = 0; i < 4; i++)
    {
    pdest = strchr( sFileName + result1, '\\' );
    result1 = (int)(pdest - sFileName + 1);
    }
    pdest = strchr( sFileName + result1, '\\' );
    result2 = (int)(pdest - sFileName + 1);
    char *ch;
    ch = new char[result2 - result1];
    memcpy(ch, sFileName + result1, sizeof(ch));
    ch[result2 - result1 - 1] = 0;
    int j = atoi(ch);
    delete []ch;
      

  3.   

    用strchr函数查找'\\'。
    也可以用strtok来查找,不过它是非线程安全的,如果你不是用在多线程里面的要简单一些#include "stdafx.h"
    #include <string.h>
    int _tmain(int argc, _TCHAR* argv[])
    {
    char psData[]="F:\\1\\0\\20081126\\106\\2042410.V3";
    char d[]="\\";
    char *p;
    p=strtok(psData,d);
    while(p)
    {
    printf("%s\n",p);
    p=strtok(NULL,d);
    }
    getchar();
    return 0;
    }结果是
    F:
    1
    0
    20081126
    106
    2042410.V3
      

  4.   

    或者
    #include "stdafx.h"
    #include <string.h>
    int _tmain(int argc, _TCHAR* argv[])
    {
    char psData[]="F:\\1\\0\\20081126\\106\\2042410.V3";
    char d[]="\\";
    char *p;
    p=strtok(psData,d);
    int iIndex=0;
    while(p)
    {
    iIndex++;
    if (iIndex==5)
    {
    printf("%s\n",p);
    getchar();
    return 0;
    }
    p=strtok(NULL,d);
    }
    getchar();
    return 1;
    }直接获得106