OvermindDL1
The code you specifed to retrieve several values for one param doesn't work:
po::positional_options_description pd;
pd.add("file", -1);
I tried
value< vector<string> >()->multitoken()which did the trick, however all the text it treated as one string when each word should be placed into its only place in the vector.
> Yup, now it works.
Good.
> For reference, I got rid of the duplicated bk::eol also by using the
> folloing code:
>
> bk::generate(ostream_iterator<char>(cout),
> "Command line options not recognized:\n" <<
> (" \"" << ba::string << '"' << bk::eol) % "",
> vsTest);
If you don't need any separators in between the list items you could write:*(" \"" << ba::string << '"') << bk::eol,
bk::generate(ostream_iterator<char>(cout),
"Command line options not recognized:\n" <<
vsTests);
(which is the equivalent of a Kleene Star).
BTW, Karma has a different API allowing to directly integrate the code above with output streams:
cout << karma::format(
*(" \"" << ascii::string << '"') << eol
, vsTest
);
where format is a std::stream manipulator.
Regards Hartmut
>
> Not putting an empty char array after the modulus operator would be
> invalid C++ and is thus required.
>
> Thanks again,
> Best,
> Diederick
>
> On Mon, Aug 24, 2009 at 1:45 PM, Diederick C.
> Niehorster<dcnieho@gmail.com> wrote:
> > Dear OvermindDL1,
> >
> > That solves the issue then, I'm using Boost 1.39 ;)
> >
> > Let me try trunk, all should work fine then. I have seen the other
> > thread in which the location of sprit v2.1's doc were disclosed,
> > however i didn't connect those threads for some reason.
> >
> > Thanks again!
> >
> > Best,
> > Diederick
> >
> > On Mon, Aug 24, 2009 at 1:36 PM, OvermindDL1<overminddl1@gmail.com>
> wrote:
> >> On Sun, Aug 23, 2009 at 11:20 PM, Diederick C.
> >> Niehorster<dcnieho@gmail.com> wrote:
> >>> That also gave me compilation errors:
> >>>
> >>> ..\Dependency\boost\boost/spirit/home/karma/generate.hpp(72) :
> error
> >>> C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1
> >>> from 'boost::mpl::failed ************(__thiscall
> >>> boost::spirit::karma::generate::error_invalid_expression::*
> >>> ***********)(Expr)' to 'boost::mpl::assert<false>::type'
> >>>
> >>> ..\Dependency\boost\boost/spirit/home/karma/generate.hpp(76) :
> error
> >>> C2039: 'generate' : is not a member of
> >>> 'boost::proto::exprns_::expr<Tag,Args,Arity>'
> >>>
> >>> Below, please find a minimal example.
> >>> Thank you for your continued help!
> >>>
> >>> Best,
> >>> Dee
> >>>
> >>> ---
> >>> #include <vector>
> >>> #include <string>
> >>> #include <iostream>
> >>> using namespace std;
> >>> #include <boost/spirit/include/karma.hpp>
> >>> namespace bk = boost::spirit::karma;
> >>> namespace ba = boost::spirit::ascii;
> >>>
> >>>
> >>> int main()
> >>> {
> >>> vector<string> vsTest;
> >>> vsTest.push_back("test");
> >>> vsTest.push_back("t2");
> >>> vsTest.push_back("t3");
> >>>
> >>>
> >>> bk::generate(ostream_iterator<char>(cout),
> >>> "Command line options not recognized:\n" <<
> >>> (" \"" << ba::string % ("\"" << bk::eol)) << "\"" <<
> bk::eol,
> >>> vsTest);
> >>>
> >>>
> >>> bk::generate(ostream_iterator<char>(cout),
> >>> "Command line options not recognized:\n" <<
> >>> ('\"' << ba::string << '\"') % bk::eol << bk::eol,
> >>> vsTest);
> >>>
> >>> return 0;
> >>> }
> >>> ---
> >>>
> >>
> >> This is what I get when I compile with your test:
> >> 1>------ Build started: Project: pure_testing, Configuration:
> Release
> >> Win32 ------
> >> 1>Compiling...
> >> 1>main.cpp
> >> 1>using native typeof
> >> 1>Linking...
> >> 1>Generating code
> >> 1>Finished generating code
> >> 1>Embedding manifest...
> >> 1>Build Time 0:27
> >> 1>Build log was saved at
> >> "file://r:\Programming_Projects\pure_testing\Release\BuildLog.htm"
> >> 1>pure_testing - 0 error(s), 0 warning(s)
> >> ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped
> ==========
> >>
> >> Looks like it works perfect to me. You are using Boost Trunk like I
> >> stated in my first post in this thread, right?
> >>
> >> You should still use this grammar though, it is the best:
> >> bk::generate(ostream_iterator<char>(cout),
> >> "Command line options not recognized:\n" <<
> >> (" \"" << ba::string << '\"') % bk::eol
> >> ,vsTest);
> >> And yes, I confirmed it compiles and runs as you want.
> >> _______________________________________________
> >> Boost-users mailing list
> >> Boost-users@lists.boost.org
> >> http://lists.boost.org/mailman/listinfo.cgi/boost-users
> >>
> >
> _______________________________________________
> Boost-users mailing list
> Boost-users@lists.boost.org
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users