C++/C#结构体转化-传string给C++

此例是把C#结构传给C++

C++:

typedef struct VidyoClientInEventGroupChat_

{

/*! Message (contents) to be sent to all remote participants */

char message[MAX_CHAT_MESSAGE_LEN];

} VidyoClientInEventGroupChat;

C#:

[StructLayout(LayoutKind.Sequential)]

public struct VidyoClientInEventGroupChat

{

unsafe fixed byte message[MAX_CHAT_MESSAGE_LEN];

public unsafe bool SetMessage(string message)

{

byte[] bytes = UnicodeStringToUtf8Array(message);

if (bytes.Length > MAX_CHAT_MESSAGE_LEN)

{

return false;

}

fixed (VidyoClientInEventGroupChat* p = &this)

for (int i = 0; i < bytes.Length; i++)

{

p->message[i] = bytes[i];

}

return true;

}

};

时间: 2024-08-01 04:05:16

C++/C#结构体转化-传string给C++的相关文章

结构体转化成字符数组

昨天晚上在解决通过socket发送结构体的问题的时候,知道了可以将结构体先转化成字符串的形式再发送,但今天之前一直有个疑问没有解决(为了方便描述,去掉socket部分),首先看下代码: #include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct info { char name[5]; char num[10]; }INFO; int main() { INFO info; char

结构体指针传参与返回值

结构体指针 结构体指针大家想必都非常清楚,我们也一直强调传参的时候使用结构体指针(占用4字节),减少对栈的压力.但是今天看linux的标准io时候.发现了localtime时间函数 返回值是一个结构体指针.当时有点懵逼了,开始觉得这样就不对.{当然肯定是我想多了} 为什么会觉得不对那?因为它是个子函数,返回一个局部变量的地址显然是没有价值的.函数调用完就被释放了呀.你在用指针承接也没有价值,完全是野指针啊.百度了一下还真的有人在么做,结果出现了问题.但是其实我的想法是错误的.人家大神怎么可能犯这

C++/C#结构体转化-二维数组-bytes To Strings

C++结构体 typedef struct VidyoClientRequestGetWindowsAndDesktops_ { /*! The number of application windows currently open */ VidyoSizeT numApplicationWindows; /*! List of open application window names (UTF-8) (Localized) */ char appWindowName[MAX_NUM_APP

进击的雨燕-------------类和结构体

类和结构体是人们构建代码所用的一种通用且灵活的构造体.我们可以使用完全相同的语法规则来为类和结构体定义属性(常量.变量)和添加方法,从而扩展类和结构体的功能. 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意通常一个类的实例被称为对象.然而在 Swift 中,类和结构体的关系要比在其他语言中更加的密切,本章中所讨论的大部分功能都可以用在类和结构体上.因此,我

C学习之结构体

结构体(struct) 结构体是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合,结构体中可以使用不同的数据类型. 1. 结构体说明和结构体变量定义 在Turbo C中, 结构体也是一种数据类型, 可以使用结构体变量, 因此,  像其它类型的变量一样, 在使用结构体变量时要先对其定义. 定义结构体变量的一般格式为: struct 结构体名 { 类型  变量名; 类型  变量名; ... } 结构体变量; 结构体名是结构体的标识符不是变量名. 类型为第二节中所讲述的五种数据类型(整型.浮

Objective-C中经常使用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

1   NSRange NSRange 的原型为 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSMakeRange的函数 NS_INLINEz是内联函数 typedef NSRange *NSRangePointer; NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) { NSRange r; r.locatio

Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

1   NSRange NSRange 的原型为 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSMakeRange的函数 NS_INLINEz是内联函数 typedef NSRange *NSRangePointer; NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) { NSRange r; r.locatio

你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物

3.8  用结构体类型描述复杂的事物 利用C++本身所提供的基本数据类型所定义的变量,只能表达一些简单的事物.比如我们可以用int类型定义nAge变量表示人的年龄,用string类型定义strName变量表示人的姓名.然而,现实世界是复杂的,仅仅使用基本数据类型是不足以描述这个复杂的现实世界的.例如,我们无法使用某个基本数据类型来描述人这个复杂事物,因为他不仅有姓名,还有身高.年龄和性别等属性需要描述.但是我们注意到,再复杂的事物也是由简单事物组成的.既然我们能用基本数据类型来描述简单事物,那么

(转载)你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物

你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物 3.8  用结构体类型描述复杂的事物 利用C++本身所提供的基本数据类型所定义的变量,只能表达一些简单的事物.比如我们可以用int类型定义nAge变量表示人的年龄,用string类型定义strName变量表示人的姓名.然而,现实世界是复杂的,仅仅使用基本数据类型是不足以描述这个复杂的现实世界的.例如,我们无法使用某个基本数据类型来描述人这个复杂事物,因为他不仅