如何创建一个在C ++中返回字符串数组的方法?

时间:2011-07-28 01:36:19

标签: c# arrays string c++-cli

我有一个问题,我正在尝试从C#转换为C ++ / CLI,我不知道如何在方法中返回字符串数组。 问题是字符串显示为数字而不是字符串。

以下是方法:

static array<String^> ^Split(String^ Victim, char SplitPoint)
{
int Index=0;
        for each(char Char in Victim)
            if(Char==SplitPoint)
                Index++;
        array<String^> ^SplitStrings = gcnew array<String^>;
        Index=0;
        for each(char Char in Victim)
        {
            if(Char==SplitPoint)
                Index++;
            else
                SplitStrings[Index]=SplitStrings[Index]+Char;
        }
        return SplitStrings;
    };

,C#中的原始方法如下所示:

    public static string[] Split(string Victim, char SplitPoint)
    {
        int Index = 0;
        foreach (char Char in Victim)
            if (Char == SplitPoint)
                Index++;
        string[] SplitStrings = new string[Index + 1];
        Index = 0;
        foreach (char Char in Victim)
        {
            if (Char == SplitPoint)
            {
                Index++;
            }
            else
                SplitStrings[Index] = SplitStrings[Index] + Char;
        }
        return SplitStrings;
    }

1 个答案:

答案 0 :(得分:2)

目前还不清楚你的实际问题是什么,所以这里是你的C#代码直接翻译成C ++ / CLI:

public:
    static array<String^>^ Split(String^ Victim, wchar_t SplitPoint)
    {
        int Index = 0;
        for each (wchar_t Char in Victim)
            if (Char == SplitPoint)
                Index++;
        array<String^>^ SplitStrings = gcnew array<String^>(Index + 1);
        Index = 0;
        for each (wchar_t Char in Victim)
        {
            if (Char == SplitPoint)
                Index++;
            else
                SplitStrings[Index] = SplitStrings[Index] + Char;
        }
        return SplitStrings;
    }

请特别注意,C ++ / CLI中的char等同于System::SByte,而不是System::Char - 后者的本地名称为wchar_t。 (另外,您没有指定SplitStrings的尺寸。)