Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#字符串转换为C字符*_C#_C_String_Type Conversion - Fatal编程技术网

将C#字符串转换为C字符*

将C#字符串转换为C字符*,c#,c,string,type-conversion,C#,C,String,Type Conversion,我想将C#字符串转换为C字符*。问题是,我不能使用固定语句,因为它必须与默认C兼容,因为我在C中的所有字符串都是char* 我尝试过字节数组,但我只成功地将其转换为char[],byte[]等,但从未转换为char* 有人知道怎么做吗 我搜索了很多,没有发现任何有用的东西(大多数建议使用固定语句,这可能会使它与默认C不兼容…) 问题是,我的函数需要一个char*作为参数,因为该函数将在默认C中使用,char*是函数的返回结果。(基本上,您将指针作为参数传递,它将结果分配给该指针的地址。这是否如我

我想将C#
字符串
转换为C
字符*
。问题是,我不能使用固定语句,因为它必须与默认C兼容,因为我在C中的所有字符串都是
char*

我尝试过字节数组,但我只成功地将其转换为
char[]
byte[]
等,但从未转换为
char*

有人知道怎么做吗

我搜索了很多,没有发现任何有用的东西(大多数建议使用固定语句,这可能会使它与默认C不兼容…)


问题是,我的函数需要一个
char*
作为参数,因为该函数将在默认C中使用,
char*
是函数的返回结果。(基本上,您将指针作为参数传递,它将结果分配给该指针的地址。这是否如我所希望的那样有效?

Marshal.StringToHGlobalAnsi
)。完成后别忘了调用
Marshal.FreeHGlobal
。或者,如果您正在使用P/Invoke,请使用
[marshallas(UnmanagedType.LPStr)]
您需要查看指针类型。看这篇MSDN文章:我并不完全了解COM和Pinvoke。。。我必须阅读它,因为它看起来非常重要,C是托管的,C++不是。因此,要将数据传递到C++ DLL中,必须将C语言数据移动到未管理的内存空间。因此,您需要转换为c#中的IntPtr对象,它是指向c#中任何数据类型的指针。因此,我需要通过手动分配在默认内存之外声明一个指针,然后我可以通过我的c DLL访问它?问题是,我用C声明变量,然后我只传递地址,我只想获取该地址并为其分配一个与C兼容的字符串。
Marshal.StringToHGlobalAnsi
。完成后别忘了调用
Marshal.FreeHGlobal
。或者,如果您正在使用P/Invoke,请使用
[marshallas(UnmanagedType.LPStr)]
您需要查看指针类型。看这篇MSDN文章:我并不完全了解COM和Pinvoke。。。我必须阅读它,因为它看起来非常重要,C是托管的,C++不是。因此,要将数据传递到C++ DLL中,必须将C语言数据移动到未管理的内存空间。因此,您需要转换为c#中的IntPtr对象,它是指向c#中任何数据类型的指针。因此,我需要通过手动分配在默认内存之外声明一个指针,然后我可以通过我的c DLL访问它?问题是,我在C中声明变量,然后我只传递地址,我只想获取那个地址并给它分配一个与C兼容的字符串。