gpt4 book ai didi

c++ - 将命令行参数输入文件传递给要解析的类

转载 作者:行者123 更新时间:2023-11-30 04:13:57 31 4
gpt4 key购买 nike

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

这是我的 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;
}

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

最佳答案

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

改变:

class SortingCompetition{
private:
string input_; // THIS LINE
vector<string> data_;

这会复制,因此构造函数(或setFilename)的参数只是一个临时参数并不重要

关于c++ - 将命令行参数输入文件传递给要解析的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144136/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com