草庐IT

integer-programming

全部标签

c++ - 为 boost::program_options 设置精度

有没有办法改变boost::program_options在program_options::options_description的帮助文本中格式化选项的默认值的方式?(那个可以通过cout得到)?特别是我有默认值是float,所以通常的十进制到二进制转换给我一个看起来像--arg(0.100000001)的帮助文本。这是非常丑陋的。使用cout不起作用,因为program_options是将自身设置为某些内部流的默认值以首先进行格式化(至少这是我通过查看源代码推断的),然后得到的结果。编到cout是结果字符串(流?)。谢谢。 最佳答案

c++ - 在 boost::program_options 解析我的命令行参数后,如何获取非标志和非选项标记

在python中,我可以构建我的optparse实例这样它会自动将选项和非选项/标志过滤到两个不同的桶中:(options,args)=parser.parse_args()使用boost::program_options,我如何检索token列表,这些token是剩余的非选项和非标志token?例如如果我的程序有标志--foo--barBAR然后我传入命令行:--foohey--barBARyou我怎样才能得到一个仅由标记“嘿”和“你”组成的列表 最佳答案 这是一个例子:namespacepo=boost::program_opt

c++ - IShellLink::SetIconLocation 将我的图标路径转换为错误的 %Program Files%

有谁知道如何纠正这种行为?目前,当我们的安装程序安装我们的应用程序时,它会获取一个IShellLink,然后使用我们的快捷方式图标(在开始菜单和桌面中)所需的数据加载它,然后使用IPersistFile::Save写出快捷方式。问题是通过IShellLink::SetIconLocation为图标指定的路径被转换为使用%ProgramFiles%...这...对于x64,是错误的。我注意到许多其他32位软件在x64下都存在此问题-但后来我假设他们自己使用%ProgamFiles%作为其.lnk创建代码中的文字元素.但是,似乎是IShellLink迫使这个错误存在,而我没有解决方法(或者

c++ - boost::program_options:如何获取应用程序名称?

使用BoostProgramOptions,如何获得argv[0]的字符串等价物? 最佳答案 我认为这是不可能的。这可能是因为程序名称也可以合法地用作选项名称。命令行解析器代码明确跳过相关的argv成员:templatebasic_command_line_parser::basic_command_line_parser(intargc,charT*argv[]):detail::cmdline(//Explicittemplateargumentsarerequiredbygcc3.3.1//(atleastmingwversi

c++ - free.c 抛出异常 "this program has stopped working"

当我使用VisualC++2010Express的调试器运行程序(server.exe)时,它运行完美,但是当我将它作为exe运行时它却没有;它崩溃并显示“Server.exe已停止工作”对话框。接下来我将exe重命名为“ServerInstaller.exe”并且它工作了,所以我认为这是一个权限错误,但它不适用于管理员模式下的“Server.exe”。然后我将VC++中的调试器附加到“Server.exe”程序,它在“free.c”中出现异常。这个文件中的代码是void__cdecl_free_base(void*pBlock){intretval=0;if(pBlock==NULL

c++/boost program_options 一个选项禁用其他

我有这样的代码:namespacepo=boost::program_options;po::options_descriptiondesc("Allowedoptions");desc.add_options()("help","producehelpmessage")("mode1","")("mode2","");po::variables_mapvar_map;po::store(po::parse_command_line(argc,argv,desc),var_map);po::notify(var_map);我的程序只能在模式1或模式2下运行。我不想要这样的语法--mod

c++ - "integer constant is too large for ‘long’ 求最大质因数时键入"

我正在解决Euler项目3:Description:Theprimefactorsof13195are5,7,13and29.Whatisthelargestprimefactorofthenumber600851475143?这是我生成答案的代码。但是我需要一个整数类型来保存600851475143。当我在Mac上的GCC上编译它时,我得到:integerconstantistoolargefor‘long’type".我预计longlong可以轻松持有这个数字。我也试过让它未签名。为什么我的代码不能保存这么小的数字?我该怎么做才能让它发挥作用?#include#includeusi

c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

我正在处理一些嵌入式代码,并且正在从头开始编写一些新东西,因此我更愿意坚持使用uint8_t、int8_t等类型。然而,当移植一个函数时:voidfunctionName(char*data)到:voidfunctionName(int8_t*data)在将文字字符串传递给函数时,我收到编译器警告“在指向具有不同符号的整数类型的指针之间转换”。(即调用functionName("putthistextin");时)。现在,我明白了为什么会发生这种情况,并且这些行只是调试,但我想知道人们认为什么是最合适的处理方式,而不是对每个文字字符串进行类型转换。在实践中,我不认为一揽子类型转换比使用

c++ - scanf 与 cin : string as integer processing

我有一个输入字符串“0100”为什么scanf("%i",&n);返回64而cin>>n;给我100?为什么cin以十进制值思考,而scanf以八进制值思考? 最佳答案 Fortheispecifier:  Anynumberofdigits,optionallyprecededbyasign(+or-).Decimaldigitsassumedbydefault(0-9),buta0prefixintroducesoctaldigits(0-7),and0xintroduceshexadecimaldigits(0-f).-sca

c++ - 使用 boost::program_options 禁止无符号值的负参数

假设我有一个程序使用boost::program_options来解析命令行参数,其中一个有一个unsigned值:#include#includenamespacepo=boost::program_options;intmain(intargc,char*argv[]){unsignednum;po::options_descriptiondesc;desc.add_options()("num,n",po::value(&num),"Non-negativenumber");po::variables_mapvm;po::store(po::parse_command_line(