c# - 从字符串转换为 char* 仅复制第一个字符

标签 c# unsafe

我已经查看了大多数字符串到 char* 转换的答案,但它对我不起作用。这是我的代码:

public static void Main() {
    string name = "ELEM";
    unsafe{
          fixed(char* name_ptr = name) {
              Console.WriteLine(name_ptr->ToString());
          }
    }
} 
// Output: E

我需要这样做,因为我必须将 char* 传递给我的 C++ 自定义 DLL。为什么它只复制第一个字符,如何正确地将字符串转换为 char*?

最佳答案

您仅获得第一个字符,因为 name_ptr 只是对单个字符的引用,当您调用 name_ptr->ToString() 时,您实际上调用了 char.ToString()

您应该使用 StringBuilder 将字符串传递给 C/C++ DLL。请参阅this question .

关于c# - 从字符串转换为 char* 仅复制第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53562081/

相关文章:

不指定类型的 C# 泛型方法

c# - Lambda 到表达式树的转换

c# - 如何获取 JSON 格式的服务器响应?

rust - 使用指向已分配向量的原始指针以允许多个线程写入非重叠部分是否合理?

c# - 不能对 C# 中的变量使用关键字 'fixed'

pointers - `*const T` 和 *mut T` 原始指针有什么区别?

c# - 我可以在不使用 "unsafe"的情况下使用二维数组编码 C 结构吗?

c# - Windows CE 上 WebBrowser 控件的替代品

c# - 使用 C# 的跨平台开源异步 HTTP 和 DB

rust - 如何从原始指针获取数组或切片?