Как мне сделать метод, который возвращает массив строк в C ++? - PullRequest
0 голосов
/ 28 июля 2011

У меня проблема, я пытаюсь конвертировать из 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 Ответ

2 голосов
/ 28 июля 2011

Действительно непонятно, каков ваш настоящий вопрос, поэтому вот прямой перевод вашего кода 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;
    }

В частности, обратите внимание, что char в C ++ / CLI равно System::SByte, а не System::Char - родное имя для последнего - wchar_t.(Также вы не указали размеры SplitStrings.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...