求Cstring转const char*方法~MFC(C)

我用MFC的CFILEDIALOG来打开文件,它是用"CString"记录下全条文件的路径~我把文件名提了出来..(C:\XXX\XXX\XXX\111.txt)把111... 我用MFC的CFILEDIALOG来打开文件,它是用"CString"记录下全条文件的路径~
我把文件名提了出来..(C:\XXX\XXX\XXX\111.txt)
把111.txt这个文件名拿了出来...
CString name=111.txt;
但是我现在要用一个函数,它是要用const char*来读取档案的~
我上网找了很多方法~好像不太行~
我正运行的是unicode字符集。。。=~=
求解答~THX
打错了~标题是C++..
展开
 我来答
帐号已注销
2012-03-27 · TA获得超过3000个赞
知道大有可为答主
回答量:1338
采纳率:75%
帮助的人:1297万
展开全部
如果你用的是unicode的话,那么CString里面存储的是wchar_t*,而不是char*。你确定要把CString转换成char*的话,还要用其他的函数:
const wchar_t* wstr = ( LPCTSTR )name; //一定得是unicode,否则这句话会错的
char str[ 20 ] = { 0 };
wcstombs( str, wstr, wcslen( wstr ) );
执行完后,str中的数据就是"111.txt"了。str可以赋值给一个const char*。
注意:如果CString里有中文的话,在wcstombs前后还应加这么两句:
setlocale( LC_ALL, "chs" );
wcstombs( str, wstr, wcslen( wstr ) );
setlocale( LC_ALL, "C" );
zhccsd
2012-03-27 · TA获得超过4042个赞
知道大有可为答主
回答量:1347
采纳率:66%
帮助的人:916万
展开全部
不多说直接上代码
char* CStringToCharArray(CString str)
{
char *ptr;
#ifdef _UNICODE
LONG len;
len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);
ptr = new char [len+1];
memset(ptr,0,len + 1);
WideCharToMultiByte(CP_ACP, 0, str, -1, ptr, len + 1, NULL, NULL);
#else
ptr = new char [str.GetAllocLength()+1];
sprintf(ptr,_T("%s"),str);
#endif
return ptr;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Leon14631
2012-03-30
知道答主
回答量:6
采纳率:0%
帮助的人:9560
展开全部
WideCharToMultiByte
然后用(const char*)强制转换指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hlslml77
2012-03-27
知道答主
回答量:13
采纳率:0%
帮助的人:2万
展开全部
asdf
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式