+-

如何在C中实现以下( Python伪代码)?
if argv[1].startswith('--foo='):
foo_value = int(argv[1][len('--foo='):])
(例如,如果argv [1]是–foo = 98,那么foo_value是98.)
更新:我对调查Boost犹豫不决,因为我只是想对一个简单的小命令行工具进行一个非常小的改动(我宁愿不必学习如何链接并使用Boost作为一个小的更改).
最佳答案
如果您已经在使用Boost,则可以使用 boost string algorithms boost lexical cast:
#include <boost/algorithm/string/predicate.hpp>
#include <boost/lexical_cast.hpp>
try {
if (boost::starts_with(argv[1], "--foo="))
foo_value = boost::lexical_cast<int>(argv[1]+6);
} catch (boost::bad_lexical_cast) {
// bad parameter
}
像这里提供的许多其他答案一样,这种方法适用于非常简单的任务,但从长远来看,通常最好使用命令行解析库. Boost有一个(Boost.Program_options),如果您恰好使用Boost可能会有意义.
否则,搜索“c命令行解析器”将产生许多选项.
点击查看更多相关文章
转载注明原文:如何检查C std :: string是否以某个字符串开头,并将子字符串转换为int? - 乐贴网