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

时间:2018-11-30 17:16:46

标签: 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 *?

1 个答案:

答案 0 :(得分:2)

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

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