VC++ 当中怎样将CString类型数据拷贝到字符数组中

sunnybones 2009-10-28 03:42:12
如题!

我使用的是VC++6.0 sp6的

搞得我头晕

CString str;
char s[128],*p=s;
p = str.GetBuffer(0);


这样写可以不?
...全文
435 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
glacierful 2009-12-24
  • 打赏
  • 举报
回复
试试这个:

CString str;
char s[128]
_tcscpy_s(s, 128, str);
wangyang327329 2009-10-30
  • 打赏
  • 举报
回复
CString str = _T("....");
char s[128];
int ilength = str.GetLength();
if(iLength < 128)
{
strcpy(s, (LPCTSTR)str);
}
s[127] = '\0';


y_l_stone 2009-10-30
  • 打赏
  • 举报
回复
我拷贝字符串一直用的memcpy,不知道会不会有问题。。
Smile_Tiger 2009-10-30
  • 打赏
  • 举报
回复
LPCTSTR(str)
jackyjkchen 2009-10-30
  • 打赏
  • 举报
回复
就算强转也应该用CStringA,它的构造函数能把Unicode变成ANSI
hellolzjwx 2009-10-30
  • 打赏
  • 举报
回复
有专门的宏来转换的
T2A
///////////////////////////////////
代码:
USES_CONVERSION;
CString str(_T("wolaiye..."));
char s[128] = {0};
wcscpy(s,T2A(str.GetBuffer()));
asec4321 2009-10-28
  • 打赏
  • 举报
回复
试下

CString str;
char s[128];
if(str.GetLength()<128) size_t i=wcstombs(s,str,str.GetLength()+1);

这是将wchar_t转换成char的函数
size_t wcstombs(
char *mbstr,
const wchar_t *wcstr,
size_t count
);
thy38 2009-10-28
  • 打赏
  • 举报
回复
请先保证项目不是Unicode:
strcpy(reinterpret_cast<char*>(s), str.GetBuffer(0));

wanjingwei 2009-10-28
  • 打赏
  • 举报
回复
强行转换
sunnybones 2009-10-28
  • 打赏
  • 举报
回复
如果数组是unsigned char类型的话,怎么办?
总会提示unsigned char* 和char*不能相互转换

CString str;
unsigned char s[128];
strcpy(s, str.GetBuffer(0));
sunnybones 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xylicon 的回复:]
CString  str; 
char  s[128; 
strcpy(s, str.GetBuffer(0));
[/Quote]

看起来似乎挺有道理
pur_e 2009-10-28
  • 打赏
  • 举报
回复
这样的话修改p,str的值也会变

用strcpy

strcpy(s,p);
xylicon 2009-10-28
  • 打赏
  • 举报
回复
CString str;
char s[128;
strcpy(s, str.GetBuffer(0));

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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