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的东东) 那应该用啥实现类似的功能的