我需要将C#字符串复制到char*
。我有这个代码,它有效,但看起来很笨拙。有更优雅的方式吗?
public unsafe static void GetReply(char* buffer) {
string reply = "Hello, world"; // or whatever
// clumsy code:
var i = buffer;
foreach (char x in reply.ToCharArray()) {
*i = x;
i++;
}
*i = '\0';
}
注意:buffer
保证指向已知长度的已分配内存。没问题。
答案 0 :(得分:5)
您可以使用Marshal.Copy
,它更清晰,也可能比循环更快。
答案 1 :(得分:2)
一种简单的方法可能是:
for(int i = 0 ; i < reply.Length ; i++) {
buffer[i] = reply[i];
}
buffer[reply.Length] = '\0';
您也可以使用fixed(char* chars = reply) {...}
并循环指针,但似乎有点过分。