C++ 如何转换类型啊 CString的 转换为 char的 代码如下
C++ 怎么转换类型啊 CString的 转换为 char的 代码如下;
CFileDialog dlg(TRUE);
dlg.m_ofn.lpstrTitle = _TEXT("打开人员文件");
dlg.m_ofn.lpstrFilter = __T("文本文档(*.txt)\0*.txt\0\0");
if(IDOK == dlg.DoModal())
{
char ch[100];
CString std;
FILE *file = fopen(dlg.GetPathName(), "r");
int i = 0;
while ((ch[i] = fgetc(file)) != EOF)
{
if (ch == 0)
{
std = ch;
((CListBox * )GetDlgItem(IDC_LIST1))->AddString(std);
i = 0;
}
i++;
}
}
fopen 的第一个参数类型不对 各种转换后 要出错 求大神解救
------解决方案--------------------
好像CString有个GetBuffer方法可以返回char*,你试试看行不行。
fopen(dlg.GetPathName().GetBuffer(), "r");
------解决方案--------------------
------解决方案--------------------
那你估计是遇到宽字符了,fopen换成_tfopen试试。
CFileDialog dlg(TRUE);
dlg.m_ofn.lpstrTitle = _TEXT("打开人员文件");
dlg.m_ofn.lpstrFilter = __T("文本文档(*.txt)\0*.txt\0\0");
if(IDOK == dlg.DoModal())
{
char ch[100];
CString std;
FILE *file = fopen(dlg.GetPathName(), "r");
int i = 0;
while ((ch[i] = fgetc(file)) != EOF)
{
if (ch == 0)
{
std = ch;
((CListBox * )GetDlgItem(IDC_LIST1))->AddString(std);
i = 0;
}
i++;
}
}
fopen 的第一个参数类型不对 各种转换后 要出错 求大神解救
------解决方案--------------------
好像CString有个GetBuffer方法可以返回char*,你试试看行不行。
fopen(dlg.GetPathName().GetBuffer(), "r");
------解决方案--------------------
/*tchar是TCHAR类型指针,*_char是char类型指针
void TcharToChar (const TCHAR * tchar, char * _char)
{
int iLength ;
//获取字节长度
iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);
//将tchar值赋给_char
WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, NULL, NULL);
}
char filename[MAX_PATH];
TcharToChar(dlg.GetPathName().GetBuffer(), filename);
FILE *file = fopen(filename, "r");
------解决方案--------------------
那你估计是遇到宽字符了,fopen换成_tfopen试试。