无法创建System :: String ^的向量

时间:2010-05-27 21:11:07

标签: .net vector c++-cli clr

所以我有一个正则表达式来解析文件名的某些部分。我试图将每个部分存储在它自己的向量中,直到我以后使用它,但它不会让我。我尝试制作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 个答案:

答案 0 :(得分:1)

std :: vector使用new来分配它的对象,但你不能用new分配System :: String ^,因为它是一个托管类型。

答案 1 :(得分:1)

如果您真的更喜欢使用STL集合,则可以使用STL / CLR库。它不是很受欢迎,this web page告诉你原因。

使用List<String^>