草庐IT

range_start

全部标签

C++ 11 正则表达式 : checking if string starts with regex

我正在使用C++11的支持,并想检查字符串的开头是否与正则表达式匹配。[如果有帮助,我可以切换到Boost,但我的印象是它们基本相同。]显然,如果我可以控制表达式的实际文本表示,我可以只粘贴^在它的开头作为anchor。但是,如果我只有一个regex怎么办?(或basic_regex)对象?我可以修改它代表的正则表达式来添加anchor吗?或者我必须使用regex_search,得到结果,检查是否从位置0开始? 最佳答案 您可以在使用regex_search时添加std::regex_constants::match_continu

c++ - 在 for range 循环中迭代包含 vector 的取消引用的 unique_ptr

为什么这段代码不像我想象的那样工作?for(autoit:*std::make_unique>(std::vector({1,2,3,4,5})))std::coutvector对象在执行循环的第一次迭代之前被销毁 最佳答案 range-basedforloop相当于:{init-statementauto&&__range=range_expression;...}对于您的range_expression,它将是auto&&__range=*std::make_unique>(std::vector({1,2,3,4,5}));但

c++ - 使用 Range v3 范围,如何将 View 和操作组合到一个管道中?

我正在学习C++20范围(使用Range-V3-VS2015)。我有这段代码可以正常工作:stringclean;autotmp1=input|view::remove_if(not_alpha)|view::transform(::tolower);std::copy(tmp1.begin(),tmp1.end(),std::back_inserter(clean));autotmp2=clean|=action::sort|action::unique;但是,我想将定义tmp1和tmp2的两个管道组合成一个管道。那可能吗?我尝试了很多方法,包括在中间添加view::move和vie

c++ - 返回条件 `range_expression`

根据某些条件迭代多个已知范围之一的最有效方法是什么?二进制条件的伪代码:forelementin(condition?range_a:range_b)//dowork这个“示例”显示了我使用range-basedforloop的意图但作为std::initializer_list具有引用语义,它将不起作用。constexprautosome_range(boolc)->std::initializer_list{if(c){return{1,2};}else{return{3,4,5};}}boolcond=true;//falsefor(autox:some_range(cond))

c++ - 使用 boost::any_range 有什么好处?

使用boost::any_range有什么好处?这是一个例子:typedefboost::any_rangeinteger_range;voiddisplay_integers(constinteger_range&rng){boost::copy(rng,std::ostream_iterator(std::cout,","));std::coutinput{...};std::listinput2{...};display_integers(input);display_integers(input2);}但是使用模板参数可以实现相同的功能并boost效率,这满足了ForwardR

c++ - 为什么 Boost.Range is_sorted 不需要前向迭代器?

C++11算法std::is_sorted和std::is_sorted_until都需要ForwardIterator。然而,Boost.Range版本boost::is_sorted只需要与InputIterator相对应的SinglePassRange。特别是,它委托(delegate)给一个基于迭代器的实现,如下所示:templateinlineIteratoris_sorted_until(Iteratorfirst,Iteratorlast,Compc){if(first==last)returnlast;Iteratorit=first;++it;for(;it!=las

c++ - 在 Boost::range 中组合适配器

我开始使用Boost::Range以获得pipelineoflazytransformsinC++.我现在的问题是如何将管道分成更小的部分。假设我有:intmain(){automap=boost::adaptors::transformed;//shortenthenameautosink=generate(1)|map([](intx){return2*x;})|map([](intx){returnx+1;})|map([](intx){return3*x;});for(autoi:sink)std::cout我想用magic_transform替换前两个map,即:intmai

c++ - "error: cannot use type ' void' as a range"究竟是什么意思?

当我在clang3.2中编译它时for(autox:{1,1.2}){}我收到这样的错误:error:cannotusetype'void'asarange这是什么意思? 最佳答案 您在初始化列表中混合了您的类型。在这种情况下它可以很清楚,但不要忘记std::stringfoo;for(autox:{foo,"bar"}){}也是两种不同的类型。当然还有很多其他情况,您可能希望它起作用,但类型必须完全匹配。 关于c++-"error:cannotusetype'void'asarange

c - WinSDK 7.1 : Getting Started with the Windows SDK Tools for Native Windows app development?

我终于能够在我的WindowsVista系统上成功安装WindowsSDK工具(v.7.1)。我已经安装了GCC编译器,这就是我目前用来编译C代码的工具。我在哪里可以找到WinSDK的文档以及我应该如何将其包含在GCC中?我在发行说明或任何内容中找不到任何解释。但是,如果您能找到解释它的内容,请随时给我一个链接。 最佳答案 这对您来说可能听起来很奇怪,但您不需要下载任何单独的WindowsSDK来为Windows开发,因为VisualStudio、MingW/GCC和其他软件通常已经包含了大多数人需要的所有内容。(有些人会说,Vis

windows - 为什么 "start firefox"命令在 Windows 命令提示符下有效?

我很好奇为什么像“startiexplore”和“startfirefox”这样的命令在Windowscmd中有效。它们不是独立的命令。如果您尝试只输入“firefox”,您将得到:“'firefox'未被识别为内部或外部命令,可运行的程序或批处理文件。”由此得出的结论是,这是“start”命令的一种特殊行为。我的第一个猜测是它的工作方式与%path%变量的使用方式类似,具有已知的搜索目录。我通过尝试为与firefox位于同一目录中的另一个可执行文件运行“start[executable]”轻松排除了它。我的结论是,我的计算机上某处有一个指定文件路径列表,只需在“开始”命令后键入文件名