如何在C++中从命令行参数分配成员变量

How do I assign a member variable from command-line argument in C++?

本文关键字:参数 分配 成员 变量 命令行 C++      更新时间:2023-10-16

有没有办法从命令行参数中分配类成员,以便该类的所有对象都具有该值(默认情况下)?默认情况下我想要它,因为成员函数在Foo类中创建了一个新对象,而且我不想让Var成为函数参数。如果可能的话,我想避免全局变量。我希望我的代码能像下面的代码一样,但不使用全局变量。

Foo.h:

#include <string>
#include <iostream>
extern int Var;
class Foo{
    public:
         int var;
         Foo();
};

Foo.cpp:

#include "Foo.h"
Foo::Foo(){
    var = Var;
}

main.cpp:

#include "Foo.h"
int Var; // global variable
using namespace std;
int main(int argc, char *argv[]){
    Var = stoi(argv[1]);
    Foo foo;
    cout << foo.var << endl; // should print the command-line argument
}

我建议使用std::istringstream:

int main(int arg_count, char * * arguments)
{
  std::istringstream arg_stream(arguments[1]);
  unsigned int value;
  arg_stream >> value;
  return 0;
}