Я пытаюсь пропустить строку в управляемом Visual C ++ массиве String ^ или String ^, но не нашел простого способа сделать это.Фактически, я потратил два дня на то, что в C # заняло бы менее 30 секунд.В C # есть метод .Skip () Enumerable
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.skip?view=netframework-4.7.2
, и я бы хотел что-то подобное для VC ++, если это возможно.
Вот что я пробовал:
auto a = gcnew cli::array<String ^>{ "Alpha", "Bravo", "Charlie", "Delta" };
auto xs = gcnew System::Collections::Generic::List<String^>(a);
System::Collections::Generic::IEnumerator<String^>^ e = xs->GetEnumerator();
e->MoveNext();
^^, который выбрасывает класс исключений System :: EventArgs не имеет члена "MoveNext"
РЕДАКТИРОВАТЬ: я знаю, что вызываетисключение System :: EventArgs не имеет члена "MoveNext" .. использование 'e' в Visual Studio заставляет компилятор думать, что я ссылаюсь на e для EventArgs как в e) click_method .. Я переключился на другое имя, и оно заполняетсякак это: System.Collections.Generic.List`1 + Enumerator [System.String]
Я также пытался ссылаться на System :: Linq, а затем
System::Collections::Generic::List<String ^>^ _list = gcnew System::Collections::Generic::List<String ^>(System::IO::File::ReadAllLines(filename));
System::Collections::Generic::List<String ^>^ _list2 = _list->Skip(1);
, что, похоже, будет работатьв C #, но получить следующее исключение
класс System :: Collections :: Generic :: List не имеет пропуска членов
, поэтому библиотека .NET не работает в CLI / C ++
Еще одна вещь, которую я попытался сделать:
System::Collections::Generic::List<String ^>^ _list = gcnew System::Collections::Generic::List<String ^>(System::IO::File::ReadAllLines(filename));
System::Collections::Generic::List<String ^>^ _list2 = _list->RemoveAt(0);
, но получила исключение: значение типа "void" нельзя использовать для инициализации сущности типа System :: Collections :: Generic :: List ^
Я пытаюсь сделать это без использования marshal_string, если это возможно, но я открыт для любых предложений, так как я потянул за это волосы, не уверен, что еще попробовать = [