+-
如何检查C std :: string是否以某个字符串开头,并将子字符串转换为int?
如何在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? - 乐贴网