How do you convert multistring to/from C# string collection?

前端 未结 3 1341
隐瞒了意图╮
隐瞒了意图╮ 2021-01-13 06:23

Multistrings (double null-terminated string of null-separated strings) are common in the Windows API. What\'s a good method for converting a multistring returned from an API

3条回答
  •  时光取名叫无心
    2021-01-13 06:34

    This might be naïve, but how about:

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

    Also - aren't you missing the final \0 (you state double-null-terminated) in StringArrayToMultiString? And it might be easier to call if the array was a params string[] array - something like:

        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();
    }
    

    [edited after clarification about final \0]

提交回复
热议问题