c#接收c++中返回的字符串

方法一:将字符串作为函数参数。

c++程序:

static void test(char* charPtr)
{
	const char* message = "????????????";
	strncpy_s(charPtr, 256, message, _TRUNCATE);

}
  • charPtr: 目标字符串的指针。
  • 256: 目标字符串的最大长度。
  • message: 源字符串的指针。
  • _TRUNCATE: 表示如果源字符串的长度超过了目标字符串的最大长度,就截断源字符串,确保目标字符串以 null 字符结尾。

c#中调用该函数并获取charPtr:

[DllImport("test.dll")]
public static extern void test(StringBuilder charPtr);

StringBuilder buffer = new StringBuilder(256);
// 调用C++函数
test(buffer);

// 从StringBuilder中获取C++函数返回的字符串
string resultString = buffer.ToString();
Console.WriteLine(resultString);

 方法二:将字符串作为返回值。

c++:

static const char* test1()
{
	const char*  charPtr = "!!!!!!!!!!!!";
	return charPtr;
}

c#:

 [DllImport("test.dll")]
 public static extern IntPtr test1();

 IntPtr charPtr= test1();
 string result = Marshal.PtrToStringAnsi(charPtr);
 Console.WriteLine(result);

Marshal.PtrToStringAnsi()charPtr 指向的以 null 结尾的 ANSI 字符串从指针中提取并转换为 C# 字符串:

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值