使用C#拷贝String到struct

使用C#拷贝String到struct

By dgiljr

介绍

本文介绍使用C#拷贝String到struct 。

代码

using System;
using System.Runtime.InteropServices;
using System.Text;

class Class1
{

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
public struct MyStruct
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=4)] public string fname;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=4)] public string lname;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=7)] public string phone;
}

public static void Main()
{
string buffer = "abcdefgh2223333";
IntPtr pBuf = Marshal.StringToBSTR(buffer);
MyStruct ms = (MyStruct)Marshal.PtrToStructure(pBuf,typeof(MyStruct));
Console.WriteLine("fname is: {0}",ms.fname);
Console.WriteLine("lname is: {0}",ms.lname);
Console.WriteLine("phone is: {0}",ms.phone);
}
}

From :

http://www.codeproject.com/csharp/gil_structs.asp

biqiong2004@hotmail.com

http://home.ripway.com/2004-6/124912/

时间: 2024-12-25 23:30:11

使用C#拷贝String到struct的相关文章

接口开发,带string和struct参数方法编写,图片base64Binary编码编写(c#开发)

问题描述 接口名称:Std::stringSendVehiclePass(std::stringVehiclePassInfo,structxsd__base64BinaryPlatePicData,structxsd__base64BinaryCarPic1,structxsd__base64BinaryCarPic2,structxsd__base64BinaryCarPic3)参数说明:VehiclePassInfo:过车信息详情xml,具体如下:<?xmlversion="1.0&

[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表

写在前面 最近对文档库的知识点进行了整理,也就有了这篇文章,当时查找这些接口,并用在实践中,确实废了一些功夫,也为了让更多的人走更少的弯路. 系列文章 sharepoint环境安装过程中几点需要注意的地方 Rest API的简单应用 rest api方式实现对文档库的管理 通过WebClient模拟post上传文件到服务器 WebHttpRequest在sharepoint文档库中的使用 [sharepoint]Rest api相关知识(转) [sharepoint]根据用户名获取该用户的权限

flex length type in struct

结构体的长度是定长的, 也就是说结构体内部每个元素应该都是固定长度的, 像char a[]这种不定长度的类型, 按理说不应该放在结构体内. 但是很奇怪的是, C中允许把char a[]这样的类型定义在结构体中, 只是它只能放在结构体元素的末端. 例如 :  [root@db-172-16-3-150 zzz]# cat d.c struct fish { int a; char b[]; float c; }; int main() { return 0; } 编译时将报错 : [root@db

php读取二进制流(C语言结构体struct数据文件)的深入解析_php技巧

尽管php是用C语言开发的,不过令我不解的是php没有提供对结构体struct的直接支持.不过php提供了pack和unpack函数,用来进行二进制数据(binary data)和php内部数据的互转: 复制代码 代码如下: string pack ( string $format [, mixed $args [, mixed $...]] )   //Pack given arguments into binary string according to format.  array unp

C++ POCO库中文编程参考指南(5) Poco::Net::SocketAddress

1 枚举 最大地址长度,这个与Poco::Net::IPAddress中的定义可以类 比,不过这里指的是`struct sockaddr_in6 enum { MAX_ADDRESS_LENGTH = #if defined(POCO_HAVE_IPv6) sizeof(struct sockaddr_in6) #else sizeof(struct sockaddr_in) #endif /// Maximum length in bytes of a socket address. }; 2

用C语言建立多个PRI DOS分区

一.引言 在DOS系统下,在计算机应用培训中因培训要求不同, 对软件的要求也不同,由于学员的误操作,存放在硬盘上的软件和重要数据容易被非法删除或受到损坏.对此,笔者通过对硬盘管理的深入分析和实践,总结出了在硬盘上备份.保护重要数据和软件的一种新的行之有效的方法:建立多个PRI DOS 分区, 不同的培训要求使用不同的PRI DOS分区,在使用时同时只有一个PRI DOS 分区可供使用, 其余PRI DOS分区均被隐含. 二.分区表结构 众所周知,DOS操作系统下,一个硬盘可以分为PRI DOS分

100个开源C/C++项目中的bugs(一)数组和字符串处理的错误

from:http://www.oschina.net/question/1579_45444 100个开源C/C++项目中的bugs 摘要 介绍 发现错误样本的各类开源项目 数组和字符串处理的错误 未定义行为 与运算符优先级相关的错误 格式化输出错误 代码打印错误例子 不正确的使用基本函数和类 无效代码的例子 总为 true 或 false 的条件 代码漏洞 复制粘贴 逾期空指针检查 杂项 摘要 本文演示静态代码分析的能力. 提供了100个已在开源C/C++项目中发现的错误例子给读者研究.所有

【C/C++学院】0730-网站以及后门/结构体对齐、结构体面试分析/深拷贝与浅拷贝/队列/字符串封装

 网站以及后门 Windwos安装Apache服务器软件,进行测试.Localhost 将可执行程序xxx.exe改为xxx.cgi放到apache服务器上,通过浏览器进行访问. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> void main() { printf("Content-type:text/html\n\n&quo

Python回顾与整理4:序列1—字符串

0.说明                  序列其实是Python的某几类数据类型的统称,如字符串,列表和元组,将它们统称为序列,是因为:它们的成员有序排列,并且可以通过下标偏移量访问到它的一个或者几个成员.         总结的思路为:先介绍适用于所有序列类型的操作符和内建函数,然后再分别对这几种序列类型进行介绍. 1.序列         序列类型都有相同的访问模式:它的每一个元素都可以通过指定一个偏移量的方式得到,多个元素通过切片操作的方式得到.而在Python序列中,偏移量的规则如下(