怎样将结构体转换成CString或Char*类型呢?
转换的目的是将结构体变成的CString 通过网络进行数据传递
谢谢哦~~
10 个解决方案
#1
widechartomultibyte()
基本介绍及功能
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串。 函数原型:int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPWSTR lpWideCharStr, int cchWideChar, LPCSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, PBOOL pfUsedDefaultChar ); 参数: CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值: CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页; CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线索ANSI代码页; CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。 dwFlags [in] Specifies the handling of unmapped characters. The function performs more quickly when none of these flags is set. The following flag constants are defined.
基本介绍及功能
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串。 函数原型:int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPWSTR lpWideCharStr, int cchWideChar, LPCSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, PBOOL pfUsedDefaultChar ); 参数: CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值: CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页; CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线索ANSI代码页; CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。 dwFlags [in] Specifies the handling of unmapped characters. The function performs more quickly when none of these flags is set. The following flag constants are defined.
#2
怎样将结构体转换成CString或Char*类型呢?
-----------------------------------
指针允许这样强制转换,一种类型的指针强制转换为另外一种类型的指针
-----------------------------------
指针允许这样强制转换,一种类型的指针强制转换为另外一种类型的指针
#3
网络上传输的类型需要时基本的可序列化的类型。你可以用mfc中标准的序列化方法进行类型到流的转换。
#4
FuncSendYourStruct(char *);
STRUCT_REQUEST youStruct;
FuncSendYourStruct(szYouStruct)
{
STRUCT_REQUEST *pyouStruct = (STRUCT_REQUEST *)szYouStruct;
int nLen = sizeof(STRUCT_REQUEST);
char szCmd[BUF_SIZE_CMD]; //szCmd用了储存你的要发送的数据
int iPos = 0;
memcpy(szCmd, (void*)pyouStruct, nLen);
iPos += nLen;
send(m_hSocket, (LPCTSTR)lpszBuf, nBufLen, 0);
}
不知道对不对,我是这么想的哦,互相学习
STRUCT_REQUEST youStruct;
FuncSendYourStruct(szYouStruct)
{
STRUCT_REQUEST *pyouStruct = (STRUCT_REQUEST *)szYouStruct;
int nLen = sizeof(STRUCT_REQUEST);
char szCmd[BUF_SIZE_CMD]; //szCmd用了储存你的要发送的数据
int iPos = 0;
memcpy(szCmd, (void*)pyouStruct, nLen);
iPos += nLen;
send(m_hSocket, (LPCTSTR)lpszBuf, nBufLen, 0);
}
不知道对不对,我是这么想的哦,互相学习
#5
直接把结构体的值用一个分隔符分开就可以了吧
#6
转换成char *没问题,CString就免了吧,CString遇到'\0'会怎么样?
#7
看看 Google protol buf
自己设计个.proto 文件转成 proto-buf对象, 然后直接转成 byte array 或者 stream 在网络传输,
对方再根据你的.proto 文件解析回来
自己设计个.proto 文件转成 proto-buf对象, 然后直接转成 byte array 或者 stream 在网络传输,
对方再根据你的.proto 文件解析回来
#8
可惜转换的不对
结构体转换成Char *,指针是结构体的首地址。值为空
#9
自己写个数据流的类, 用重载运算符"<<"和">>",对基本的数据类型进行重载,这个是基类。以后还可以用的。
然后在写个类继承它,对你要发送的结构体进行重载。
具体的去看看MFC中Cstring类是怎么实现的。模仿它就行了 。
然后在写个类继承它,对你要发送的结构体进行重载。
具体的去看看MFC中Cstring类是怎么实现的。模仿它就行了 。
#10
说错了 , 是这个类CArchive!!!
#1
widechartomultibyte()
基本介绍及功能
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串。 函数原型:int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPWSTR lpWideCharStr, int cchWideChar, LPCSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, PBOOL pfUsedDefaultChar ); 参数: CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值: CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页; CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线索ANSI代码页; CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。 dwFlags [in] Specifies the handling of unmapped characters. The function performs more quickly when none of these flags is set. The following flag constants are defined.
基本介绍及功能
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串。 函数原型:int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPWSTR lpWideCharStr, int cchWideChar, LPCSTR lpMultiByteStr, int cchMultiByte, LPCSTR lpDefaultChar, PBOOL pfUsedDefaultChar ); 参数: CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值。你也可以指定其为下面的任意一值: CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页; CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线索ANSI代码页; CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。 dwFlags [in] Specifies the handling of unmapped characters. The function performs more quickly when none of these flags is set. The following flag constants are defined.
#2
怎样将结构体转换成CString或Char*类型呢?
-----------------------------------
指针允许这样强制转换,一种类型的指针强制转换为另外一种类型的指针
-----------------------------------
指针允许这样强制转换,一种类型的指针强制转换为另外一种类型的指针
#3
网络上传输的类型需要时基本的可序列化的类型。你可以用mfc中标准的序列化方法进行类型到流的转换。
#4
FuncSendYourStruct(char *);
STRUCT_REQUEST youStruct;
FuncSendYourStruct(szYouStruct)
{
STRUCT_REQUEST *pyouStruct = (STRUCT_REQUEST *)szYouStruct;
int nLen = sizeof(STRUCT_REQUEST);
char szCmd[BUF_SIZE_CMD]; //szCmd用了储存你的要发送的数据
int iPos = 0;
memcpy(szCmd, (void*)pyouStruct, nLen);
iPos += nLen;
send(m_hSocket, (LPCTSTR)lpszBuf, nBufLen, 0);
}
不知道对不对,我是这么想的哦,互相学习
STRUCT_REQUEST youStruct;
FuncSendYourStruct(szYouStruct)
{
STRUCT_REQUEST *pyouStruct = (STRUCT_REQUEST *)szYouStruct;
int nLen = sizeof(STRUCT_REQUEST);
char szCmd[BUF_SIZE_CMD]; //szCmd用了储存你的要发送的数据
int iPos = 0;
memcpy(szCmd, (void*)pyouStruct, nLen);
iPos += nLen;
send(m_hSocket, (LPCTSTR)lpszBuf, nBufLen, 0);
}
不知道对不对,我是这么想的哦,互相学习
#5
直接把结构体的值用一个分隔符分开就可以了吧
#6
转换成char *没问题,CString就免了吧,CString遇到'\0'会怎么样?
#7
看看 Google protol buf
自己设计个.proto 文件转成 proto-buf对象, 然后直接转成 byte array 或者 stream 在网络传输,
对方再根据你的.proto 文件解析回来
自己设计个.proto 文件转成 proto-buf对象, 然后直接转成 byte array 或者 stream 在网络传输,
对方再根据你的.proto 文件解析回来
#8
可惜转换的不对
结构体转换成Char *,指针是结构体的首地址。值为空
#9
自己写个数据流的类, 用重载运算符"<<"和">>",对基本的数据类型进行重载,这个是基类。以后还可以用的。
然后在写个类继承它,对你要发送的结构体进行重载。
具体的去看看MFC中Cstring类是怎么实现的。模仿它就行了 。
然后在写个类继承它,对你要发送的结构体进行重载。
具体的去看看MFC中Cstring类是怎么实现的。模仿它就行了 。
#10
说错了 , 是这个类CArchive!!!