怎么给一个结构体中的char[]赋一个CString的值
如何给一个结构体中的char[]赋一个CString的值
我菜鸟一个,学了C++没学C ,有个结构体
typedef struct {
char name[50];
} city;
然后用SQL语句获得了一个CString的值
CString temp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem ("name")->Value;
现在我需要要得到一个结构体的对象指针,对象里面的char name[] 的值是CString 的值
应该怎么赋值?
希望各位大侠帮助我
------解决方案--------------------
http://blog.****.net/pizi0475/archive/2010/03/04/5346708.aspx
------解决方案--------------------
memcpy(name, temp, temp.GetLenght()*2); //unicode
------解决方案--------------------
看反了,直接按楼上说的memcpy就可以了,第一个参数就是city->name,第二个是CStirng类型变量,第三个参数就是CString的长度
------解决方案--------------------
对的!
------解决方案--------------------
我菜鸟一个,学了C++没学C ,有个结构体
typedef struct {
char name[50];
} city;
然后用SQL语句获得了一个CString的值
CString temp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem ("name")->Value;
现在我需要要得到一个结构体的对象指针,对象里面的char name[] 的值是CString 的值
应该怎么赋值?
希望各位大侠帮助我
------解决方案--------------------
http://blog.****.net/pizi0475/archive/2010/03/04/5346708.aspx
------解决方案--------------------
memcpy(name, temp, temp.GetLenght()*2); //unicode
------解决方案--------------------
看反了,直接按楼上说的memcpy就可以了,第一个参数就是city->name,第二个是CStirng类型变量,第三个参数就是CString的长度
------解决方案--------------------
对的!
city xCity = {0};
CString strTemp = (TCHAR *)(_bstr_t)m_pRecordset->GetFields()->GetItem ("name")->Value;
#ifdef _UNICODE
WideCharToMultiByte(CP_ACP,0,strTemp.GetBuffer(),strTemp.length(),xCity.name,50,NULL,NULL);
#else
strcpy_s(xCity.name,strTemp.GetBuffer()); //或者用memcpy
#endif
------解决方案--------------------
//宽字转多字
std::string CSocketManager:: WS2S(const std:: wstring& wstr)
{
std::string str;
if (! wstr.empty ())
{
int nStrLen = WideCharToMultiByte(CP_ACP , 0 , wstr .c_str() , - 1, NULL, 0, NULL, NULL);
char* pStr = new char [nStrLen];
if ( pStr)
{
memset(pStr , 0 , nStrLen *sizeof( char));
WideCharToMultiByte(CP_ACP , 0 , wstr .c_str(), -1, pStr, nStrLen, NULL, NULL);
str = pStr;
delete[] pStr;
}
}
return str ;
}
//多字转宽字
std::wstring CSocketManager:: S2WS(const std:: string& str)
{
std::wstring wstr;
if (! str.empty ())
{
int nWStrLen = MultiByteToWideChar(CP_ACP , 0 , str .c_str(), -1 , NULL , 0);
wchar_t* pwStr = new wchar_t[nWStrLen ];
if ( pwStr)
{
memset(pwStr , 0 , nWStrLen *sizeof( wchar_t));
MultiByteToWideChar(CP_ACP , 0 , str .c_str(), -1 , pwStr , nWStrLen );
wstr = pwStr;
delete[] pwStr ;
}
}
return wstr ;
};