| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 735 人关注过本帖
标题:yu版,问个小问题哈 关于ctring转换为char* 的
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:20 回复次数:2 
yu版,问个小问题哈 关于ctring转换为char* 的
程序代码:
void ClisttestDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    //CDialogEx::OnOK();
    // TODO: 在此添加控件通知处理程序代码
    CFileDialog dlg(true);
    if (dlg.DoModal() == IDOK)
    {
        //this->MessageBox(L"选择的文件地址:" + dlg.GetPathName() + " | 选择的文件名:" + dlg.GetFileName() ,
        //    L"提示:",MB_OK);
    }
    else
        this->MessageBox(L"你选择了取消按钮");
    /*
    CFileDialog 相关属性值
    GetFileExt 获得所选文件的后缀名
    GetFileName 获得所选文件的名称
    GetFileTitle 获得文件全名  (不含扩展名)
    GetFolderPath 获得文件路径
    GetNextPathName 获得下一个文件路径全名(多选文件时使用)
    GetPathName 获得路径全名
    GetStartPosition 获得所选文件的第一个文件的定位信息(多选时使用)
    */
    FILE* fp;
    //由于fopen()函数中需要的文件名参数是字符型的,所以我们还需要把CString类型的文件名转换为字符类型的变量。
    int i, length;
    //定义i作为循环变量,定义length作为文件路径及文件名的长度
    char* FileName;
    //定义char型的字符指针来存储文件名,给fopen()函数使用
    CString fileName;
    fileName=dlg.GetPathName();
    length=fileName.GetLength();
    //把文件名的长度赋给length变量
    FileName=new char[length];
    //给char型的指针变量FileName分配内存空间
    for(i=0;i<length;i++)   //把CString型变量fileName中的字符一个一个地赋给char型的指针变量FileName
        *(FileName+i)=fileName.GetAt(i);
    *(FileName+length)=NULL;   //在FileName变量的最后加上一个结束标志
    fp=fopen(FileName,"rb");
    if(fp!=NULL) this->MessageBox((LPCTSTR)FileName,(LPCTSTR)fileName,MB_OK); else this->MessageBox(L"文件打开错误",L"文件名转换出现错误",MB_OK);

}
这里如果文件名是ansi的还没啥问题  如果是中文的 就出现错误


2、mfc中 不用fopen(应该是c的东东) 那应该用啥实现类似的功能的
搜索更多相关主题的帖子: 通知 color 
2013-01-08 14:56
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我是在网上抄的  呵呵呵

DO IT YOURSELF !
2013-01-08 21:43
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
FILE* fp;
    CString FileName;
    FileName=dlg.GetPathName();
    fp=_tfopen(FileName,_T("rb"));
    if(fp!=NULL)
    {
        //this->MessageBox((LPCTSTR)FileName,L" ",MB_OK);
    }
    else this->MessageBox(L"文件打开错误",L"请继续检查",MB_OK);
这样得以解决 再继续研究中。。。。。

DO IT YOURSELF !
2013-01-09 10:41
快速回复:yu版,问个小问题哈 关于ctring转换为char* 的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016844 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved