将字符串中的,所有不能在windows文件夹名上出现的字符去掉,咋办?

解决方案 »

  1.   

    Windows的文件名称不能包含\/:*?<>|,你可以用一条替换语句替换掉这些字符,最简单的实现方式是用CString的Replace方法,循环几次。
      

  2.   

    你可以接受输入时,屏蔽掉这些字符。。\/:*?<>|,
      

  3.   

    CString str;
    str.LeftTrim("\\/:*?<>|");
      

  4.   


    CString str = "123***eert/\:4***5";
    //str.TrimLeft("\\/:*?<>|");
    str.Replace("//","////"); MessageBox(str,"",MB_OK);为啥没有替换过来?
      

  5.   

    直接用replace,全部换成一个字符了。但是/好像有问题
      

  6.   

    如果仅仅是在程序中进行不能输入这样的处理的话,用正则表达式进行校验。如果要替换的话,直接replace成特定字符串就可以。
      

  7.   

    CString str = "123***eert/\:4***5";
    //str.TrimLeft("\\/:*?<>|");
    str.Replace("//","////"); MessageBox(str,"",MB_OK);为啥没有替换过来?
      

  8.   

    一定要:
    str.TrimLeft("\\/:*?<>|");// 看看这个 函数 的 说明
    不能replace
      

  9.   

    还有个双引号 "
    for(i=0; pFileName[i]; i++)
    {
    if(strchr(":\\/?*\"<>|", pFileName[i]))
    pFileName[i] = '_';
    }
      

  10.   

    CString str = "123***eert/\:4***5";
    str.TrimLeft("\\/:*?<>|");
    str.TrimLeft("*");
    MessageBox(str,"",MB_OK);都不对么
      

  11.   

    windows8,下面测试双引号可以有!
    CString str = "123**??*eert/\:4***5";
    char temp[MAX_NAME_LENGTH] = {0};
    memcpy(temp,(LPSTR)(LPCTSTR)str,str.GetLength()+1);
    for(int i=0; temp[i]; i++)
    {
    if(strchr(":\\/?*\<>|", temp[i]))
    temp[i] = '_';
    } MessageBox(temp,"",MB_OK);
    实现了!厉害厉害