Возникли проблемы при создании векторов System :: String ^ - PullRequest
0 голосов
/ 28 мая 2010

Итак, у меня есть выражение регулярного выражения для анализа определенных частей имени файла. Я пытаюсь сохранить каждую часть в своем собственном векторе, пока не воспользуюсь ею позже, но это не позволит мне. Одна ошибка, которую я получаю, когда пытаюсь создать вектор из System :: String ^, заключается в том, что error C3698: 'System::String ^' : cannot use this type as argument of 'new' Затем, когда я пытаюсь просто создать вектор из std :: string, он не может неявно преобразоваться в тип System :: String ^, и кастинг тоже не сработает.

void parseData()
{
    System::String^ pattern = "(\\D+)(\\d+)(\\w{1})(\\d+)\\.(\\D{3})";
    std::vector < System::String^ > x, y, filename, separator;

    Regex re( pattern );

    for ( int i = 0; i < openFileDialog1->FileNames->Length; i++ )
    {
        Match^ m = re.Match( openFileDialog1->FileNames[i] );
        filename.push_back( m->Groups[0]->Value );/*
        x.push_back( m->Groups[1]->Value );
        separator.push_back( m->Groups[2]->Value );
        y.push_back( m->Groups[3]->Value );*/
    }                       
}

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Вы можете использовать библиотеку STL / CLR, если вы действительно предпочитаете использовать коллекции STL. Это не совсем популярно, эта веб-страница показывает, почему.

Использование List<String^>

1 голос
/ 28 мая 2010

std :: vector использует new для размещения своих объектов, но вы не можете выделить System :: String ^ новым, поскольку это управляемый тип.

...