草庐IT

用于日志解析的 C++ 库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion是否有专门用于日志解析(帮助识别多行事件)的C++库?像用于Apache日志的MergeLog或用于Web解析的libcurl?

c++ - 解析 C++ 的复杂性

出于好奇,我想知道关于解析C++的一些“理论”结果是什么。让n成为我的项目的大小(例如,在LOC中,但由于我们将处理big-O它不是很重要)C++的解析时间复杂度是O(n)吗?如果不是,复杂性如何?C(或Java或任何语法意义上更简单的语言)是否在O(n)中解析?C++1x是否会引入更难解析的新特性?非常感谢引用! 最佳答案 我认为出于问题的目的,不同的人以不同的方式解释了“解析”一词。从狭义的技术意义上讲,解析只是验证源代码是否与语法匹配(或者甚至可能构建树)。有一个相当普遍的民间定理,它说您根本无法解析C++(在这个意义上),因

c++ - setlocale 是线程安全函数吗?

我需要更改线程中的区域设置以正确解析带有strtod()的double,为此我使用setlocale()(C++)。它是线程安全的吗?更新:另一个问题。当我在main()函数中调用setlocale()时,它不会影响更深层次的其他例程。为什么???代码很多,写chunk的时候有问题。 最佳答案 在C++11中,标准线程现在是该语言的受支持部分。该标准明确指出,setlocale()调用会与其他对setlocale()的调用或对受当前C语言环境(包括strtod())影响的函数的调用引入数据竞争。locale::global()函数被

c++ - C++ 中的高性能 XML 解析

很多关于用C++解析XML的问题等等...但是,我的问题不是一般性问题,而是非常具体的。我需要一个非常高效的C++XML解析器。特别是我有一个非常非常大的XML文件要解析。我的应用程序必须打开此文件并检索数据。它还必须插入新节点并将最终结果再次保存在文件中。为此,我一开始使用了rapidxml,但它需要我打开文件,解析所有内容(所有内容,因为这个库没有直接访问文件的功能,而无需先加载整个树),然后编辑树,修改它并通过覆盖它来将最终树存储在文件中......它消耗太多资源。是否有一个XML解析器不需要我加载整个文件,但我可以使用它来快速插入新节点和检索数据?你能为我的这个问题指出解决方案

C++,命令行参数没有被正确解析

我有一个程序:int_tmain(intargc,char*argv[]){std::cout我希望打印出所有命令行参数。然而,输出是这样的:./Test.exehelloworld开始输入数量:3.Hw它似乎只查看每个参数中的第一个字符,而不是整个char*直到终止字符。有人有什么想法吗?附加说明:通过VS2008创建它,我基本上是在Internet上复制和粘贴一个应该有效的示例。我已经在bash、powershell和cmd中运行了该程序。 最佳答案 您的VisualC++项目设置为Unicode,您的主函数称为_tmain。这

c++ - 在运行时从语法构建解析器

许多(大多数)C++正则表达式库允许在运行时从字符串创建表达式。有没有人知道任何C++解析器生成器允许在运行时将表示为字符串的语法(最好是BNF)提供给生成器?我发现的所有实现要么需要运行显式代码生成器,要么需要通过巧妙的模板元编程来表达语法。 最佳答案 构建一个接受语法作为输入的递归下降、回溯解析器应该很容易。您可以将所有规则简化为以下形式(或者就好像您有):A=BCD;通过递归下降解析这样的规则很容易:调用对应于找到B的例程,然后调用找到C的例程,然后调用找到D的例程。如果你正在做一个通用解析器,你总是可以调用一个“parse_

c++ - 解析一个 int(x) 参数

这是一个带有一个int参数的简单函数:voidf(intx){}f(42);这是另一个带有一个int参数的函数:voidg(int(x)){}g(42);现在让我们将x定义为一个类型:typedefintx;voidh(int(x)){}h(42);//warning:passingargument1of‘h’makespointerfromintegerwithoutacast(这是我用gcc4.8.2观察到的行为)解析器作者如何处理这种情况?似乎经典管道Lexer->Parser->SemanticChecker->...在这里不起作用。 最佳答案

c++ - 解析 C++ 以生成单元测试 stub

我最近一直在尝试为一些遗留代码创建单元测试。我一直在使用链接器来告诉我哪些函数导致链接错误,greping源代码以找到定义并从中创建一个stub。有没有更简单的方法?是否有某种C++解析器可以以某种易于使用的形式为我提供类定义,我可以从中生成stub? 最佳答案 您可能需要调查http://os.inf.tu-dresden.de/vfiasco/related.html#parsing.但是C++解析很难。另一方面,也许ctags或类似的东西可以提取类定义...您也可以尝试编写自己的简单(?)解析器以从头文件生成类stub...我

C++:如何从格式化的文本文件中读取大量数据到程序中?

我正在为特定的流体问题编写CFD求解器。至此每次运行仿真都会生成网格,当改变几何形状和流体属性时,需要重新编译程序。对于单元格数量较少的小型问题,它工作得很好。但是对于超过100万个细胞,并且需要经常改变流体性质的情况,效率很低。显然,我们需要将仿真设置数据存储在配置文件中,并将几何信息存储在格式化的网格文件中。Simulation.config文件%Dimension:2Dor3DN_Dimension=2%NumberoffluidphasesN_Phases=1%Fluiddensity(kg/m3)Density_Phase1=1000.0Density_Phase2=1.0%

c++ - 消除 spirit x3 解析器规则中的左递归

我目前坚持使用boostspiritx3解析的规则。这是我要解析的EBNF(使用spirit中的%运算符作为列表):type::=class_type|lambda_typelambda_type::=more_arg_lambda|one_arg_lambdamore_arg_lambda::="(",type%",",")","=>",typeone_arg_lambda::=type,"=>",type"]使用boostspiritx3,我试图解析为以下结构/变体:typedefx3::variant,x3::forward_ast>Type;structLambdaType{s