字符串拷贝strcpy的问题,大家来看看。

djfu 2005-05-23 10:41:51
char sc[20];
CString ss = "test";
strcpy(sc, ss);
/*
编译提示出错:
error C2664: 'strcpy' : cannot convert parameter 2 from 'class CString' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
*/
strcpy(sc,ss.Operator LPCTSTR());
/*
编译提示出错:
error C2664: 'strcpy' : cannot convert parameter 2 from 'const unsigned short *' to 'const char *' ,Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
*/

怎么改正呢?
...全文
115 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CPPLOVER_78 2005-05-23
  • 打赏
  • 举报
回复
不能这么简单的去掉
而是应该 工程-> 设置->C/C++ C预处理器中去掉_UNICODE 字段就可以了
djfu 2005-05-23
  • 打赏
  • 举报
回复
这样去掉_UNICODE 吗?
#ifdef _UNICODE
#undef _UNICODE
#endif
vcmute 2005-05-23
  • 打赏
  • 举报
回复
_UNICODE宏导致的
CString目前是wchar_t
自然不能直接用strcpy
要用_tcscpy,或去掉_UNICODE
djfu 2005-05-23
  • 打赏
  • 举报
回复
有个问题我觉得非常奇怪:

CString ss;
char sc[20];

ss.Format("%s", sc);

我有时在一个工程里面使用完全没有问题,但是在另外一个工程里面则编译出错:
error C2664: 'GetErrorMessage' : cannot convert parameter 1 from 'char [20]' to 'unsigned short *'

怎么搞的?????????


humourHM 2005-05-23
  • 打赏
  • 举报
回复
方法如下
sprintf(sc,"%s",ss);
bohut 2005-05-23
  • 打赏
  • 举报
回复
strcpy(sc,(LPCSTR)ss);
humourHM 2005-05-23
  • 打赏
  • 举报
回复
用sprintf函数。
wang_yuanwai 2005-05-23
  • 打赏
  • 举报
回复
char sc[20];
CString ss = "test";
ss.GetBuffer(20);
strcpy(sc, ss);
这样就可以了!
wang_yuanwai 2005-05-23
  • 打赏
  • 举报
回复
ding!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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