gpt4 book ai didi

c# - 如何将多字符串与 C# 字符串集合相互转换?

转载 作者:太空狗 更新时间:2023-10-29 22:25:14 24 4
gpt4 key购买 nike

多字符串(以 null 分隔的字符串的双 null 终止字符串)在 Windows API 中很常见。什么是将从 API 返回的多字符串转换为 C# 字符串集合的好方法,反之亦然?

我对正确处理字符编码特别感兴趣(Windows XP 及更高版本)。

下面的方法似乎可以创建一个多字符串,但我没有解码多字符串的例子。

static string StringArrayToMultiString(
ICollection<string> stringArray
)
{
StringBuilder multiString = new StringBuilder();


if (stringArray != null)
{
foreach (string s in stringArray)
{
multiString.Append(s);
multiString.Append('\0');
}
}

return multiString.ToString();
}

最佳答案

这可能很天真,但是如何:

static string[] MultiStringToArray(string multiString)
{
return multiString.TrimEnd('\0').Split('\0');
}

<罢工>另外 - 你是不是错过了 StringArrayToMultiString 中的最后一个 \0 (你声明双空终止)? 如果调用array 是一个 params string[] 数组 - 类似于:

    static string StringArrayToMultiString(params string[] values)
{
if (values == null) throw new ArgumentNullException("values");
StringBuilder multiString = new StringBuilder();

foreach (string s in values)
{
multiString.Append(s);
multiString.Append('\0');
}
return multiString.ToString();
}

[在澄清最终\0 后编辑]

关于c# - 如何将多字符串与 C# 字符串集合相互转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com