使用命令行参数创建结构体向量



我在理解创建这个结构体向量的过程中遇到了一些麻烦。我将文件作为参数传递到程序中,并使用它们的文件位置来创建包含此信息的结构体。是否有一种方法来创建结构体,并将其添加到使用结构函数的矢量?

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);
    }
}

或者更好的方法是什么?我尝试使用这种格式,但我得到错误。

您有两个主要错误。

首先,char**没有任何substr成员函数。你的意思可能是用std::string代替:

void setFileDetails(std::string path);
//                  ^^^^^^^^^^^

第二,在argv中有一个不必要的*:

int main(int argc, char** argv[])
//                      ^

最新更新