C++ 将命令行参数输入文件传递给要分析的类

C++ 将命令行参数输入文件传递给要分析的类,c++,command-line-arguments,argument-passing,C++,Command Line Arguments,Argument Passing,对于我的问题,可能有一个非常简单的解决方案,但是我在将输入文件(从命令行参数)传递到类中进行解析时遇到了一些问题 以下是我的main.cpp代码的相关部分: #include <iostream> #include <chrono> #include "SortingCompetition.h" int main(int argc, char** argv) { if (argc != 3) { std::cerr << "I

对于我的问题,可能有一个非常简单的解决方案,但是我在将输入文件(从命令行参数)传递到类中进行解析时遇到了一些问题

以下是我的main.cpp代码的相关部分:

#include <iostream>
#include <chrono>
#include "SortingCompetition.h"

int main(int argc, char** argv)
{
    if (argc != 3)
    {
        std::cerr << "Invalid arguments" << std::endl;
        std::cerr << "Usage: ./a.out <input file> <output file>" << std::endl;
        return 1;
    }

    SortingCompetition sorter(argv[1]);

    return 0;
}

这就是我遇到问题的地方,我没有正确地将输入文件从命令参数传递到私有变量。我已经搜索了很长时间,但找不到解决方案。

您正确地传递了它,但存储了对临时的引用。这就是问题所在

更改:

class SortingCompetition{
private:
    string input_;  // THIS LINE
    vector<string> data_;
分类竞赛{
私人:
字符串输入\;//此行
矢量数据;

这复制了值,因此构造函数的参数(或
setFilename
)只是临时的,这无关紧要。“解析”的重要性在哪里?我认为这没有关系。在
readData
函数中,我试图解析输入文件:
bool SortingCompetition::readData(){string temp;input_>>temp;
Oh-aha。那还有其他问题吗?好的,谢谢。但是我要把它改成什么呢?如果我把
const
放在那里,我就不能再解析它了。
#include "SortingCompetition.h"

SortingCompetition::SortingCompetition(const string& inputFileName){
    input_ = inputFileName;
}
void SortingCompetition::setFileName(const string& inputFileName){
    input_ =  inputFileName;
}
class SortingCompetition{
private:
    string input_;  // THIS LINE
    vector<string> data_;