×

cstring转char

cstring转char(CString转成char*//怎么转化)

admin admin 发表于2023-06-07 05:52:37 浏览32 评论0

抢沙发发表评论

本文目录

CString转成char*//怎么转化


CString st=_T(“123“);
int nLength = st.GetLength();
int nBytes = WideCharToMultiByte(CP_ACP,0,st,nLength,NULL,0,NULL,NULL);
char* path1 = new char[ nBytes + 1];
memset(path1,0,nLength + 1);
WideCharToMultiByte(CP_OEMCP, 0, st, nLength, path1, nBytes, NULL, NULL);
path1[nBytes] = 0;
你用这个吧,有点麻烦,但是char*传化cstring 直接初始化就可以了

我试了楼上的方法也可以
CString st=_T(“123“);
char* p=(char*)st.LockBuffer();
st.Format(L“%s sdjf“,p);
GetDlgItem(IDC_EDIT1)-》SetWindowText(st);
一个函数搞定

求助含1个字符的CString转char怎么转啊比如CString a = _T(“a“);转成char后变成’a’也就是97怎么做


字符串 “a“  尾部,含不可见 字符串结束符,所以 它不是1个字节。

通常,CString str; 到 char 字符串,可以这样做:

CString str; 到
char  *cstr= new char;   // 声明一个指针,并动态分配成一个数组,数组大小自己决定。

(用 malloc() 分配也可以)。

用 strcpy(cstr, LPCTSTR (str));   就转换好了。

如果你只取1个字符,那么就用 cstr;

97 是 十进制 整型,你可以  输出: printf(“%d“, cstr);

这样也可以:

int x;
char cstr=“a“;
x=cstr;
printf(“%d “,x );



VC CString 转换为 char*


1.传给未分配内存的const char* (LPCTSTR)指针.
CString cstr(asdd);
const char* ch = (LPCTSTR)cstr;
ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
2.传给未分配内存的指针.
CString cstr = “ASDDSD“;
char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
cstr.ReleaseBuffer();
//修改ch指向的值等于修改cstr里面的值.
//PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把CString 值赋给已分配内存的char *。
CString cstr1 = “ASDDSD“;
int strLength = cstr1.GetLength() + 1;
char *pValue = new char[strLength];
strncpy(pValue, cstr1, strLength);
4.第三种用法.把CString 值赋给已分配内存char数组.
CString cstr2 = “ASDDSD“;
int strLength1 = cstr1.GetLength() + 1;
char chArray;
memset(chArray,0, sizeof(bool) * 100); //将数组的垃圾内容清空.

MFC中怎样将 CString 转为 char*


微软有现成的转换函数,如下,在前面加个宏定义,USES_CONVERSION;然后用宏转换T2A。
CString str = _T(“中国人“);
USES_CONVERSION;
char* p = T2A(str.GetBuffer(0));
str.ReleaseBuffer();

CString怎么转换成char*


那种强制转换不好用,很多时候都不能用。下面看我这个转换吧。虽然代码多一点,但是好用。有问题继续联系我。
CString str = _T(“asdfg“);
string st = (string)(CStringA)str;
int len = st.length();
char* ch = (char*)malloc(len); //动态申请char*大小的空间
for(int i = 0 ; i 《len ; i++)
{
ch[i] = st[i];
}
ch[len] = ’\0’; //char是以’\0’结束的,否则会出现结尾乱码

如何将cstring转换成为char


char * cs2ca(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;
}
CString转char*的最佳方案

如何将cstring转换成char


方法一:
可以用API:WideCharToMultiByte进行转换
方法二:
可以添加文件#include 《afxpriv.h》
然后这样:
CString strTest = _T(“abcd“);
USES_CONVERSION;
LPSTR = T2A(strTest);