多字符串(以空分隔字符串的双空结尾字符串)在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');
}

另外-您是否遗漏了\0中的最后一个StringArrayToMultiString(您声明双空终止)?如果数组是一个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();
}

[在对final进行澄清后编辑\0]

07-26 09:33