我在理解创建这个结构向量的过程中遇到了一些麻烦。我将文件作为参数传递给程序,并使用它们的文件位置来创建包含此信息的结构。有没有办法创建结构并使用结构函数将其添加到向量?
struct fileDetails
{
string filePath;
string fileName;
string fileExt;
void setFileDetails(char** path);
};
void fileDetails::setFileDetails(char** path)
{
filePath = path.substr(0, path.find_last_of('\\'));
fileExt = path.substr(path.find_last_of(".") + 1);
fileName = path.substr(path.find_last_of('\\') + 1);
fileName = fileName.substr(0, fileName.find_last_of('.'));
}
int main(int argc, char** argv[])
{
vector<fileDetails> fileList;
fileDetails fDet;
for (int i = 0; i < argc; i++)
{
fDet.setFileDetails(argv[i]);
fileList.push_back(fDet);
}
}
或者更好的方法是什么?我试图用这种格式做到这一点,但我收到了错误。
答案 0 :(得分:2)
您有两个主要错误。
首先,char**
没有任何substr
成员函数。您可能想要的是使用std::string
代替:
void setFileDetails(std::string path);
// ^^^^^^^^^^^
其次,*
中有一个不必要的argv
:
int main(int argc, char** argv[])
// ^
如果您同时修复了两个程序will compile just fine。