Hi,
why would you need to run the program with --input-file without a value?

If you want to set the inputFile variable to a default value if it is not specified
on the command line simply assign it where you declare the variable. Alternatively
you can assign the variable like this:

if (vm.count("input-file")) {
...
} else {
  inputFile = "whatever";
}

Best regards,
Tarcisio Fedrizzi



On Mon, Aug 19, 2013 at 6:46 PM, Vivek Anand <vickywindwin@gmail.com> wrote:
Hi All,

I am using program option for my program. Here is my code snippet 

 string inputFile, outputFile;

/* Populate command line arguments */
    po::options_description desc("Usage: KDMGenerator [OPTIONS]");
    {
        desc.add_options()
            ("help", "prints this message") 
            ( "input-file", po::value<string>(&inputFile), "input file name" )
            ( "output-file", po::value<string>(&outputFile), "output file name");
    }

    po::variables_map vm;
    po::store(po::parse_command_line(argc, argv, desc), vm);
    po::notify(vm);

    if (vm.count("help") || !vm.size())
    {
        cout <<desc;
        return 0;
    }

    if(vm.count("input-file"))
    {
        cout << "Input file :" << inputFile << '\n';
    }

    if(vm.count("output-file"))
    {
        cout << outputFile << '\n';
    }


The issue I am facing is that if i I call my program without passing value for input file, something like 

./myapp --input-file --output-file out.txt

I get Input file: --output-file


i.e the value "--output-file" get stored in inputFile and vm.count("output-file") returns zero.

Is this the desired behavior? Is there any workaround for this?

--
Vivek,


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users