我已经看过大多数将字符串转换为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 *?
答案 0 :(得分:2)
您只会得到第一个字符,因为name_ptr只是对单个字符的引用,当您调用name_ptr->ToString()
时,实际上是调用char.ToString()
。
您应该使用StringBuilder
来将字符串传递给C / C ++ DLL。参见this question。