首页 新闻 搜索 专区 学院

C++中,和C#功能相同的代码

0
悬赏园豆:10 [已解决问题] 解决于 2021-10-14 09:17

这段代码是C#的

            //m_struPtzCfg  这个东西是个结构体
            Int32 nSize = Marshal.SizeOf(m_struPtzCfg);
            IntPtr ptrPtzCfg = Marshal.AllocHGlobal(nSize);
            Marshal.StructureToPtr(m_struPtzCfg, ptrPtzCfg, false);

Question: C++有没有相同功能的代码?



        //m_struPtzCfg  这个东西是个结构体,就是这个
        public struct NET_DVR_PTZPOS
        {
            public ushort wAction;//获取时该字段无效
            public ushort wPanPos;//水平参数
            public ushort wTiltPos;//垂直参数
            public ushort wZoomPos;//变倍参数
        }
echo_lovely的主页 echo_lovely | 小虾三级 | 园豆:911
提问于:2021-10-13 14:28
< >
分享
最佳答案
1

对于这种代码 C++ 不就是最擅长做的吗?冒昧的说一句,题主是没有好好学 C++ 吧。既然要帮了你了,就把代码给你看看:

#include <iostream>
struct NET_DVR_PTZPOS
{
     unsigned short wAction;//获取时该字段无效
     unsigned short wPanPos;//水平参数
     unsigned short wTiltPos;//垂直参数
     unsigned short wZoomPos;//变倍参数
};

int main()
{
    NET_DVR_PTZPOS* ptrPtzCfg = new NET_DVR_PTZPOS{1,2,3,4};     //这个是你的指针指向的内容,我假设是这个内容
    NET_DVR_PTZPOS m_struPtzCfg;     //你要转化的结构体

    memcpy(&m_struPtzCfg, ptrPtzCfg,sizeof(NET_DVR_PTZPOS));     //拷贝过去
    return 0;
}

如果有不懂的话,可以追问。

收获园豆:8
寂静的羽夏 | 小虾三级 |园豆:1623 | 2021-10-13 17:37

我一个学Java的,被招进来做C#,现在又要开发C++,我已经在转型了[笑死]

echo_lovely | 园豆:911 (小虾三级) | 2021-10-14 08:19

Hello,C++有没有那种现成的进制转换的方法?
类似于C#的

int x = 10;
Convert.ToUInt16(x.toString(), 16);
echo_lovely | 园豆:911 (小虾三级) | 2021-10-14 09:13

@echo_lovely: 据我所知,只有转字符串有现成的。C++自带的库是没有的。

寂静的羽夏 | 园豆:1623 (小虾三级) | 2021-10-14 12:53

@echo_lovely: 一种方式是通过进制的定义实现,第二个是vsscanf_s配合va_list实现。给你后者的例子,前者很简单,比较好实现。

#include <iostream>
#include <cstdarg>

int HexToInt(char* numstring, char* format, ...)
{
	int result;
	va_list arglist;
	va_start(arglist, format);
	result = vsscanf_s(numstring, format, arglist);
	va_end(arglist);
	return result;
}



int main()
{
	char* t = "10";
	int num;
	
	HexToInt(t, "%x", &num);

	return 0;
}

寂静的羽夏 | 园豆:1623 (小虾三级) | 2021-10-14 13:06
其他回答(1)
0

上面C#的写法是按照C++的习惯写的
获取内存大小,分配内存

收获园豆:2
不知道风往哪儿吹 | 园豆:2001 (老鸟四级) | 2021-10-13 16:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册