将命令行参数输入文件传递给要解析的类
Posted
技术标签:
【中文标题】将命令行参数输入文件传递给要解析的类【英文标题】:Passing a command line argument input file to a class to parse 【发布时间】:2013-10-09 06:18:21 【问题描述】:我的问题可能有一个非常简单的解决方案,但是我在将输入文件(从命令行参数)传递到类进行解析时遇到了一些问题。
这是我的 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;
这是 SortingCompetition.h 文件:
#ifndef SORTINGCOMPETITION_H_
#define SORTINGCOMPETITION_H_
#include <string>
#include <vector>
using namespace std;
class SortingCompetition
private:
string& input_;
vector<string> data_;
public:
SortingCompetition(const string& inputFileName);
void setFileName(const string& inputFileName);
bool readData();
bool prepareData();
void sortData();
void outputData(const string& outputFileName);
;
#endif
这里的所有功能都必须保持不变。 IE。
SortingCompetition(const string& inputFileName);
必须保持这种状态...我无法删除 const
或其他任何内容。
下面是SortingCompetition的相关实现:
#include "SortingCompetition.h"
SortingCompetition::SortingCompetition(const string& inputFileName)
input_ = inputFileName;
void SortingCompetition::setFileName(const string& inputFileName)
input_ = inputFileName;
这是我遇到问题的地方,我没有将输入文件从命令参数正确传递给私有变量。找了好久,没找到解决办法。
【问题讨论】:
“解析”的重要性是什么?我不认为这是相关的。 在readData
函数中,我试图解析输入文件:bool SortingCompetition::readData() string temp; input_ >> temp;
哦啊哈。那么还有其他问题吗?
【参考方案1】:
您正确地传递了它,但您正在存储对临时的引用。这就是问题所在。
变化:
class SortingCompetition
private:
string input_; // THIS LINE
vector<string> data_;
这会复制值,因此构造函数(或setFilename
)的参数只是一个临时参数并不重要
【讨论】:
好的,谢谢。但是我要改成什么呢?如果我在其中粘贴const
,我将无法再解析它。以上是关于将命令行参数输入文件传递给要解析的类的主要内容,如果未能解决你的问题,请参考以下文章