从CString到char [].怎么做安全 CString s1="ad";char s2[256];strcpy(s2,s1);这样做可以吗?安全吗?更好的方法是怎么样的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我见过另外一种做法,s2[i] = s1[i]; 你要怎么样安全呢?为什么不安全?实在不行挨个负值for(int i=0;i<str.getlength();i++){char[i]=str.get[i];}char[i]='\0';行不行? CString 转char[] char temp[]="2、如何将char数组里的内容copy到CString";strcpy(m_chartocstring.GetBuffer(strlen(temp)),temp);m_chartocstring.ReleaseBuffer();AfxMessageBox("char数组转化为CString!是我亲自写的!",MB_OK);UpdateData(0); 这样很安全啊,根据实际长度分配空间^_^CString str1="PiggyXP";char *str=new char[str.GetLength()+1];strcpy(str,str1); 如果s1的长度太长会造成溢出,所以安全的方法是在使用strcpy()前先判断一下: CString s1="ad"; char s2[256]; int len1 = s1.GetLength(); if(len1 <= 256) strcpy(s2,s1.GetBuffer(0)); strcpy(s2,s1.GetBuffer(s1.GetLength);s1.ReleaseBuffer(); 楼主的方法没什么问题,我一直用的!放心,只要s2[256]够用char s2[256];一般不会有问题的。 s1.ReleaseBuffer();又做何解?释放? 只要没有定义_UNICODE,拷贝不越界,楼主的做法是没什么问题的 strcpy(strchar,(LPSTR)(LPCTSTR)strCString); //CString---->char[] 可以try{} catch(...){} 如果copy的话,建议申明字符串用:TCHAR* pBuf; // 或者用更好的LPTSTR和LPCTSTR,他们其实是TCHAR的指针拷贝用 _tcscpy函数,他在ansi,unicode环境下都能很好工作,避免用strcpy.CString str; // 目标字符串int _toUse; // 需要使用的字符个数LPTSTR tmp = str.GetBufferSetLength(_toUse); // 得到TCHAR*// ... 使用str.ReleaseBuffer(); // 使用完毕 PiggyXP(【小猪】●你快乐于是我快乐这样很安全啊,根据实际长度分配空间^_^CString str1="PiggyXP";char *str=new char[str.GetLength()+1];strcpy(str,str1);============同意小猪猪的方法。动态分配空间。 不过用完了要释放空间,free(str); 见过一位前辈这样写的:CString str = "Heloo";char *chr = new char(str.getLength()+1);memcpy(chr,str.getLength()+1,str.getLength()+1);memcpy是不是比strcpy安全?学习ing... pengjd(悲酥清风memcpy(chr,str.getLength()+1,str.getLength()+1);============================================应该是memcpy(chr,str.GetBuffer(str.getLength()),str.getLength()+1); CString str = m_pRs.GetLastErrorString();MessageBox(NULL,str,"",0 | 0x00200000L);int len = str.GetLength();TCHAR* pchar;pchar = str.GetBuffer(len + 1);str.ReleaseBuffer(); 一般我是这么用的CString to Char:lstrcpy(Char,CString);//char是数组的名字Char to CString : CString+=Char; 一定要注意是否为UNICODECString s1="ad";int len = s1.GetLength();char s2[256];memset((void*)s2,0,sizeof(char) * 256);#ifdef _UNICODEWideCharToMultiByte(CP_ACP,0,(LPCTSTR)s1,-1,s2,255,NULL,NULL);#elsestrcpy(s2,(LPCTSTR)s1);#endif... 抱歉,修正如下:一定要注意是否为UNICODECString s1="ad";int len = s1.GetLength();char s2[256];memset((void*)s2,0,sizeof(char) * 256);#ifdef _UNICODEWideCharToMultiByte(CP_ACP,0,(LPCTSTR)s1,-1,s2,255,NULL,NULL);#elselen = (len < 255)? len : 255;strncpy(s2,(LPCTSTR)s1,len);#endif... 能不能介绍一本VC字符串处理方面比较全面的书籍.你们用的这些在C/C++的书籍里找不到. 请教GDIPlus如何实现文字光晕 WTL实现属性对话框 如何获取编辑框的最后一行 大家帮我看看这个代码里面不懂得地方,关于SOCKET编程 大虾们,请问这个问题如何解决 非模态属性表(PropertySheet)中用按钮弹出模态对话框时程序挂起 -- 高手帮帮忙呀 谁能讲解以下 当编译一个c/cpp 文件时 发生了什么?lib/ 下的文件干什么用?编译器如何知道 lib 目录在那? 菜鸟送分:端口是个什么冬冬?有何用呢? 资源中IDW_XXXX是什么东西,怎么定义? 就要跳槽去一家软件公司,面试应注意什么(VC++,MFC) 明天毕业了,送分来表达我的心情 请教一下关于C语言函数调用的问题
s2[i] = s1[i];
为什么不安全?
实在不行挨个负值
for(int i=0;i<str.getlength();i++)
{
char[i]=str.get[i];
}
char[i]='\0';
行不行?
char temp[]="2、如何将char数组里的内容copy到CString";
strcpy(m_chartocstring.GetBuffer(strlen(temp)),temp);
m_chartocstring.ReleaseBuffer();
AfxMessageBox("char数组转化为CString!是我亲自写的!",MB_OK);
UpdateData(0);
char *str=new char[str.GetLength()+1];
strcpy(str,str1);
CString s1="ad";
char s2[256];
int len1 = s1.GetLength();
if(len1 <= 256)
strcpy(s2,s1.GetBuffer(0));
s1.ReleaseBuffer();
char s2[256];
一般不会有问题的。
catch(...){}
TCHAR* pBuf; // 或者用更好的LPTSTR和LPCTSTR,他们其实是TCHAR的指针
拷贝用 _tcscpy函数,他在ansi,unicode环境下都能很好工作,避免用strcpy.CString str; // 目标字符串
int _toUse; // 需要使用的字符个数
LPTSTR tmp = str.GetBufferSetLength(_toUse); // 得到TCHAR*
// ... 使用
str.ReleaseBuffer(); // 使用完毕
这样很安全啊,根据实际长度分配空间^_^CString str1="PiggyXP";
char *str=new char[str.GetLength()+1];
strcpy(str,str1);
============同意小猪猪的方法。
动态分配空间。
free(str);
CString str = "Heloo";
char *chr = new char(str.getLength()+1);
memcpy(chr,str.getLength()+1,str.getLength()+1);memcpy是不是比strcpy安全?
学习ing...
memcpy(chr,str.getLength()+1,str.getLength()+1);
============================================
应该是memcpy(chr,str.GetBuffer(str.getLength()),str.getLength()+1);
MessageBox(NULL,str,"",0 | 0x00200000L);
int len = str.GetLength();
TCHAR* pchar;
pchar = str.GetBuffer(len + 1);
str.ReleaseBuffer();
CString to Char:lstrcpy(Char,CString);//char是数组的名字
Char to CString : CString+=Char;
CString s1="ad";
int len = s1.GetLength();
char s2[256];
memset((void*)s2,0,sizeof(char) * 256);#ifdef _UNICODE
WideCharToMultiByte(CP_ACP,0,(LPCTSTR)s1,-1,s2,255,NULL,NULL);
#else
strcpy(s2,(LPCTSTR)s1);
#endif
...
一定要注意是否为UNICODE
CString s1="ad";
int len = s1.GetLength();
char s2[256];
memset((void*)s2,0,sizeof(char) * 256);#ifdef _UNICODE
WideCharToMultiByte(CP_ACP,0,(LPCTSTR)s1,-1,s2,255,NULL,NULL);
#else
len = (len < 255)? len : 255;
strncpy(s2,(LPCTSTR)s1,len);
#endif
...