CString类型转换问题

dd_zhouqian 2007-05-08 11:50:22
如题,我想通过strncpy函数将CString类型的数据拷贝到一char数组中,现大至的代码如下>:
CString strHello("Hello");
char string[100]="abcdefg";
LPCTSTR p = strHello;
strncpy(string,LPSTR(p),10);
printf ( "After: %s\n", string );
程序执行过程中,string的最终结果为"H",也就是"Hello"首字母,我调试的时候查了下,估计是LPSTR(p)这句将数据弄丢了,但却不知道如何解决?
...全文
268 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngwolf 2007-05-13
  • 打赏
  • 举报
回复
不好意思,没看到上面你是char string,那么应该下面这样:
CString strHello("Hello");
TCHAR string[100]="abcdefg";
lstrncpy(string, strHello, 10);

如果你非要拷贝到char数组里面,可以这样:
CString strHello("Hello");
char string[100]="abcdefg";
USES_CONVERSION;
strncpy(string, W2A((LPCTSTR) strHello), 10); //注意这里是strncpy
youngwolf 2007-05-13
  • 打赏
  • 举报
回复
另外,你上面的程序写得就像唐僧一样!
CString strHello("Hello");
char string[100]="abcdefg";
lstrncpy(string, strHello, 10);
youngwolf 2007-05-13
  • 打赏
  • 举报
回复
用lstrncpy即可。
vs2005默认是Unicode码,而strncpy只能用于MBAC码。
yuntianhai 2007-05-13
  • 打赏
  • 举报
回复
CString strHello("Hello");
char string[100]="abcdefg";

strncpy(string,(LPCTSTR)strHello,10);
printf ( "After: %s\n", string );
dd_zhouqian 2007-05-08
  • 打赏
  • 举报
回复
忘记说了,本人用的开发工具为vs2005

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧