我正在使用boost :: program_option编写程序,但无法使用其功能之一:

 po::options_description desc("Allowed options");
desc.add_options()
    ("include-path,I", po::value< std::vector<std::string> >(), "include path");

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

if (vm.count("include-path"))
{
    std::cout << "Include paths are: " 
         << vm["include-path"].as< std::vector<std::string> >() << "\n";
}

与boost.tutorial( http://www.boost.org/doc/libs/1_57_0/doc/html/program_options/tutorial.html )几乎相同

我得到这样的错误:错误:无法将'std :: basic_ostream'左值绑定到'std :: basic_ostream &&'std :: cout <<“包含路径为:” << vm [“ include-path”]。as>() << std :: endl;

我读过一些主题,例如: 错误:无法将'std :: basic_ostream'左值绑定到'std :: basic_ostream &&' 重载运算符<<:无法将左值绑定到'std :: basic_ostream &&'

但是我看不到与我的问题有关的联系。 我的平台:Fedora 20,Gcc 4.8.3,boost_1_57_0,我正在使用-std = c ++ 11 flat来编译代码。

#1楼 票数:2

您不能像这样打印vector<std::string> 这与Boost或Program Options无关:

std::vector<std::string> v = vm["include-path"].as< std::vector<std::string> >();
std::cout << "Include paths are: ";
for (auto& p : v)
    std::cout << "\n\t" << p;

生活在Coliru

#include <boost/program_options.hpp>
#include <iostream>

namespace po = boost::program_options;

int main(int argc, char** argv) {
    po::options_description desc("Allowed options");
    desc.add_options()
        ("include-path,I", po::value< std::vector<std::string> >(), "include path");

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

    if (vm.count("include-path"))
    {
        std::vector<std::string> v = vm["include-path"].as< std::vector<std::string> >();
        std::cout << "Include paths are: ";
        for (auto& p : v)
            std::cout << "\n\t" << p;
    }
}

  ask by kotu translate from so

未解决问题?本站智能推荐:

3回复

std :: vector:无法绑定'std :: ostream {aka std :: basic_ostream ''左右'到'std :: basic_ostream &&”

尝试做一些简单的事情时,我遇到了一个令人困惑的错误消息 这说 (使用gcc-4.8.1和-std = c ++ 11测试) SO有类似的问题,如重载运算符<<:无法将左值绑定到'std :: basic_ostream <char> &&am
1回复

错误:无法绑定'std :: ostream {aka std :: basic_ostream }'左值成'std :: basic_ostream &&'

您好everonye,甚至我在这里找到了有关此问题的许多答案,一个答案根本无法解释我事情如何无法解决所有问题。 所以我的问题是,当我尝试实现运算符<<作为内联方法时,我遇到了一个名为Matrix的类,出现以下错误 这是我的方法的实现在类中的外观 当我将其实现为这
1回复

无法绑定'std :: ostream {aka std :: basic_ostream }'左值成'std :: basic_ostream &&”

关于这个标题,关于StackOverflow的这个标题有很多问题,但是没有一个帮助我,我也不是很了解发生了什么。 我正在尝试创建一个生成随机单词的类。 首先,我试图将所有元音和辅音放入两个不同的static vector s中。 但是,当测试类时,出现此错误: 我不太明白这个错
2回复

错误:无法绑定'std :: basic_ostream '左右'std :: basic_ostream &&”

我已经看过几个关于这个的问题,特别是重载运算符<<:无法将左值绑定到'std :: basic_ostream <char> &&'非常有帮助。 它让我知道我的问题是我正在做一些c ++ 11无法从中推断出类型的东西。 我认为我的问题很大一部分是我
1回复

(boost :: && std::)绑定仅在具有很少参数的MSVC上失败

编辑:最小化代码示例 错误94错误C2198:'Wt :: WApplication *(__ cdecl *)(const Wt :: WEnvironment&,int)':调用\\ wt-3.3.4-msvs2013-windows-x86-sdk \\ include \\
2回复

无法将'std :: basic_ostream'左值绑定到'std :: basic_ostream &&'[关闭]

我在A类中定义了这样的<<操作符:Ah: A.cpp: 在包括Ah的另一个文件中,我想这样做: 在这一行,我gcc返回以下错误: 错误:无法将“ std :: basic_ostream”左值绑定到“ std :: basic_ostream &
1回复

'错误:无法绑定'std :: ostream {aka std :: basic_ostream }'左值成'std :: basic_ostream &&'无模板[重复]

这个问题已经在这里有答案 : 去年关闭。 运算符重载的基本规则和惯用法是什么? (7个答案) 我读过类似的问题,但有模板。 我没
3回复

high_resolution_clock错误:无法绑定'std :: ostream {aka std :: basic_ostream }'左值成'std :: basic_ostream &&'

如何在C ++中打印high_resolution_clock ? 构建以上结果将导致: 和 阅读此答案后,我尝试遍历“容器”: 但是,这导致更多错误。 我也尝试使用printf并将high_resolution_clock::now()强制转换为很long l