所以我有一个正则表达式来解析文件名的某些部分。我试图将每个部分存储在它自己的向量中,直到我以后使用它,但它不会让我。我尝试制作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 );*/
}
}
答案 0 :(得分:1)
std :: vector使用new来分配它的对象,但你不能用new分配System :: String ^,因为它是一个托管类型。
答案 1 :(得分:1)
如果您真的更喜欢使用STL集合,则可以使用STL / CLR库。它不是很受欢迎,this web page告诉你原因。
使用List<String^>