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

Creating a vector of structs using command line arguments

本文关键字:结构体 向量 创建 参数 命令行      更新时间:2023-10-16

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

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[])
//                      ^