File 类打开CString 类型的文件路径,不转码

  1. 一般文件都是通过文件打开对话框获得的,文件路径是CSTring类型。    如果用打开文件, File.open(Filename,"rw")函数,第一个参数是char 类型的指针或者数组。通常是将MFC文件对话框中获取到的文件路径Filename(CString类型的)转换为char的指针或者数组,比较麻烦,同时如果打开的文件路径带有Unicode的特殊字符,会造成转换错误,还有就是cstring中隐藏了一些特殊字符的转义,如‘/’,这样在转换后的char *里没法识别文件路径。。先附上转换代码:
    char *Unicode2Ansi(const CString &str)
    {
        char *pstr;
        long len;
        len = WideCharToMultiByte(936, 0, str, -1, NULL, 0, ULL, NULL);
        pstr = new char[len + 1];
        menset(pstr, 0, len + 1);
        WideCharToMultiByte(936, 0, str, -1, pstr, 0, ULL, NULL);
        return pstr;
    }
    

    2.  可以改成 _tfopen函数:

    CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("All Files (*.*)|*.*||"),NULL);
     CString str;
     if(dlg.DoModal() == IDOK)
      str=dlg.GetPathName();
     else
      return;
    
    File *fp= _tfopen(str,_T("r")));
    

    3.    问题:看一下WideCharToMultiByte(); 函数

        还有就是比较一下open()  和 _tfopen()  的差别是啥。


阅读更多
个人分类: 字符编码
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭