MFC vs2017将cstring 转化成 char *
vs2017 MFC文件打开一个未知路径和文件名
CString FilePathName;
CFileDialog dlg(true);
if (dlg.DoModal()==IDOK)
{
FilePathName = dlg.GetPathName(); //获取路径规划数据文件路径和文件名,返回类型是cstring
//将cstring FilePathName转化成char * filename
string st = (string)(CStringA)FilePathName; //先转化成string
int len = st.length(); //获取长度
char* filename = (char *)malloc(len+1); //动态申请内存空间,多申请一个,否则释放时会报错:CRT detected that the application wrote to memory after end of heap buffer
for (int i = 0; i < len; i++) //转化成 char *
{
filename[i] = st[i];
}
filename[len] = '\0'; //char是以'\0'结束的,否则会出现结尾乱码
FILE *fp;
fp = fopen(filename, "r"); //打开格式文件,只读,参数类型是char*,VS2017 中cstring不能直接转化成char*
free(filename); //释放掉申请的动态内存
}