Boost logo

Boost Users :

From: Lawry, Brian (blawry_at_[hidden])
Date: 2005-11-08 16:42:55


I am using Boost 1.33.0 and MS Visual Studio .NET 2003
(13.10.3077) and having trouble developing a simple
Win32 console application that accepts case-insensitive
command-line options.

-- output ----------------------------------
..\>app -n 2
BOOST_PROGRAM_OPTIONS_VERSION=2
count set to 2

..\>app -N 2
BOOST_PROGRAM_OPTIONS_VERSION=2
Exception caught: unknown option -N
--------------------------------------------

-- code ------------------------------------
#include <boost/program_options.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
        using std::cout;
        using std::endl;
        namespace po = boost::program_options;
        namespace cls = boost::program_options::command_line_style;

        int count = 0;

        cout << "BOOST_PROGRAM_OPTIONS_VERSION=" << BOOST_PROGRAM_OPTIONS_VERSION << endl;

        try
        {
                po::options_description desc("Usage");
                desc.add_options()
                        ("help,h", "produce help message")
                        ("count,n", po::value<int>(&count), "repeat count")
                        ;

                po::variables_map vm;

                int cl_style = 0;
                cl_style |= cls::allow_short;
                cl_style |= cls::allow_dash_for_short;
                cl_style |= cls::short_allow_next;
                cl_style |= cls::case_insensitive;
                po::store(po::command_line_parser(argc, argv).options(desc).style(cl_style).run(), vm);

                po::notify(vm);

                if (vm.count("count"))
                        cout << "count set to " << count << endl;
                else
                        cout << "count not set" << endl;
        }
        catch( exception &e )
        {
                cout << "Exception caught:\t" << e.what() << endl;
        }
        catch(...)
        {
                cout << "Unhandled exception caught!" << endl;
        }
}
--------------------------------------------

The line "cl_style |= cls::case_insensitive;" seems to
have no effect. The other options in that section do
seem to work as I can create other errors by omitting
others. I tried for a minimal set of styles.

Any ideas what I'm doing wrong?

Thanks.

Brian Lawry
Mfg Software Engineer
Compressor Controls Corp
blawry<insert_at_here>cccglobal.com


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net