如何将字符串[]转换为char **?

问题描述 投票:0回答:1

我有一个依赖的库,该库接收带有char**作为函数参数之一的结构。

我想要一个包装器,该包装器接收一个List<string>(或与此相关的任何一个string[])并创建一个char**放入该结构中。编译器可以很好地处理我的代码,但是我真的不确定我是否正确理解了fixedunsafe概念,而且我担心会产生意想不到的后果:

InternalAttributeKeys attrKeys;  // has { (char**) .keys , (int) .count }
unsafe 
{
    char*[] chars = new char*[keys.Count];
    for (var i = 0; i < keys.Count; ++i)
    {
        fixed (char* c = keys[i].ToCharArray())
        {
            chars[i] = c;
        }
    }
    fixed (char** keysPtr = chars)
    {
        attrKeys.keys = keysPtr;
    }
}
attrKeys.count = (uint) keys.Count;
return attrKeys;

我理解正确吗?

通常是否有更好的发送char**的方法(例如,我可以改为发送char*[]并期望C#在幕后进行转换)?

c# pointers unsafe
1个回答
0
投票

您可以使用Linq

        var charArray = array.SelectMany(x => x.ToCharArray());

  string[] S = {"aaaaa",
                "bbbbb",
                "ccccc"};
  char[] C = string.Join(string.Empty, S).ToCharArray();
© www.soinside.com 2019 - 2024. All rights reserved.