есть конфиг файл вида
ip=192.168.1.1
port=10
есть метод load который в идеале должен читать файл и парсить значения ip и port. имеет вид
void Config::load(std::string filename)
{
std::ifstream config(filename);
po::options_description desc("Port and ip");
desc.add_options()
("ip", po::value<std::string>(), "ip address")
("port", po::value<short>(), "port");
po::variables_map vm;
if (config)
po::store(po::parse_config_file(config, desc), vm);
std::cout << vm["ip"].as<std::string>() << std::endl;
std::cout << vm["port"].as<std::string>() << std::endl;
}
и есть ошибка :) которая появляется при запуске скомпилированного файла.
terminate called after throwing an instance of 'boost::exception_detail::clone_impl >' what(): boost::bad_any_cast: failed conversion using boost::any_cast
Входные параметры:
--addr="192.168.0.1"
--port="8080"
Код:
#include <boost/program_options.hpp>
namespace po = boost::program_options;
#include <iostream>
int main (int argc, char *argv[]) {
po::options_description config("Conf");
config.add_options()
("addr", po::value<std::string>()->required(), "IP address")
("port", po::value<std::string>()->required(), "Port")
;
try
{
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, config),vm);
po::notify(vm);
const std::string address = vm["addr"].as<std::string>();
const std::string port = vm["port"].as<std::string>();
std::cout << "address: " << address << std::endl;
std::cout << "port: " << port << std::endl;
} catch ( const std::exception& e ) {
std::cerr << e.what() << std::endl;
return 1;
}
return 0;
}
Ссылка на Wandbox.org
P.S. На всякий случай уточню - код должен быть аналогичный, за исключением того, что Вы используете parse_config_file
вместо parse_command_line
, т.е. парсите содержимое файла, а не параметры комммандной строки.
ошибку нашел сам ) моя невнимательность.
поменял строчку
std::cout << vm["port"].as<std::string>() << std::endl;
на
std::cout << vm["port"].as<short>() << std::endl;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я так понимаю, VAO - это просто обертка над конкретным VBO? Те