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

时间:2014-05-04 00:53:13

标签: c++ vector struct

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

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

或者更好的方法是什么?我试图用这种格式做到这一点,但我收到了错误。

1 个答案:

答案 0 :(得分:2)

您有两个主要错误。

首先,char**没有任何substr成员函数。您可能想要的是使用std::string代替:

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

其次,*中有一个不必要的argv

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

如果您同时修复了两个程序will compile just fine