小编Nik*_*Nik的帖子

BOOST_FUSION_ADAPT_STRUCT没有采用正确数量的参数

我正在使用Boost :: Spirit将一些文本解析为结构.这需要使用BOOST_FUSION_ADAPT_STRUCT来解析文本并直接存储到结构中.我知道宏有两个参数:结构名称为第一个arg,所有结构成员为第二个参数.而我正在通过那些2.但我得到编译错误说,

error: macro "BOOST_FUSION_ADAPT_STRUCT_FILLER_0" passed 3 arguments, but takes just 2
Run Code Online (Sandbox Code Playgroud)

这是代码片段.如果您需要整个代码,请告诉我.

谢谢.

namespace client
{
    namespace qi = boost::spirit::qi;
    namespace ascii = boost::spirit::ascii;
    namespace phoenix = boost::phoenix;

    struct Dir_Entry_Pair
    {
        std::string                 dir;
        std::string                 value1;
        std::pair<std::string, std::string> keyw_value2;
    };
}

BOOST_FUSION_ADAPT_STRUCT(
    client::Dir_Entry_Pair,
    (std::string, dir)
    (std::string, value1)
    (std::pair< std::string, std::string >, keyw_value2))
Run Code Online (Sandbox Code Playgroud)

这是我试图解析的规则,

qi::rule<Iterator, Dir_Entry_Pair()> ppair  =   dir
                                                >>  '/'
                                                >>  entry
                                                >> -(keyword >> entry);
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-fusion boost-spirit-qi

9
推荐指数
1
解决办法
1100
查看次数

Apache Tika的C/C++替代品

我正在寻找基于Java的Apache Tika框架的C/C++替代方案.具体来说,我在一个框架下搜索文件元数据和结构化文本提取.经过一些在线搜索和浏览,我最接近的是GNU libextractor和一堆单独的文件过滤器,解析文档以提取文本数据(pdftoext,xls2csv ..etc)

任何人都可以推荐一个与Apache的Tika相媲美的好库吗?

谢谢

c++ java full-text-search metadata apache-tika

7
推荐指数
1
解决办法
2847
查看次数

如何在EC2上运行mapreduce作业时获取文件名?

我正在学习弹性mapreduce,并开始使用Amazon Tutorial Section中提供的Word Splitter示例(代码如下所示).该示例为所提供的所有输入文档中的所有单词生成字数.

但是我希望通过文件名获得Word Counts的输出,即仅在一个特定文档中的单词计数.由于字数的python代码从stdin获取输入,我如何判断哪个输入行来自哪个文档?

谢谢.

#!/usr/bin/python

import sys
import re

def main(argv):
  line = sys.stdin.readline()
  pattern = re.compile("[a-zA-Z][a-zA-Z0-9]*")
  try:
    while line:
      for word in  pattern.findall(line):
        print  "LongValueSum:" + word.lower() + "\t" + "1"
      line =  sys.stdin.readline()
  except "end of file":
    return None
if __name__ == "__main__":
  main(sys.argv)
Run Code Online (Sandbox Code Playgroud)

python mapreduce amazon-ec2 amazon-emr

1
推荐指数
1
解决办法
2572
查看次数

Makefile vpath不适用于头文件

我试图在我的Makefile中使用vpath,以避免为每个源文件添加目录名前缀.但我不能让它正常工作.

这是Makefile:

CC=gcc -Wall

vpath %.h include
vpath %.c src 

all: main.c Event.o Macros.h
        $(CC) $< Event.o -o test/a.out  

Event.o: Event.c Event.h Macros.h
        $(CC) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)

SRC目录被正确包括在内.即,通过gcc找到Event.c文件.但是Event.h和Macros都没有.我在gcc中遇到错误,说在编译Event.c时找不到这两个文件.

我尝试一次将C文件中的#include指令更改为每个.

#include "Event.h" /* doesnt work */
#include <Event.h> /* doesnt work */
#include "../include/Event.h" /* works */
Run Code Online (Sandbox Code Playgroud)

你能帮帮我解决这个问题吗?我真的想避免在每个源文件之前使用目录名,因为我的实际Makefile比这大.

c c++ gcc makefile

1
推荐指数
1
解决办法
3185
查看次数

在Racket中打印cond中的多个语句

在Racket中,我试图在"cond"语句中打印多个表达式,如下所示,

(let ((var `(make))
      (exp '(1 2)))
   (cond
      [(number? 2) `(hi ,var)
                   `(bye ,exp)]))
Run Code Online (Sandbox Code Playgroud)

但只有"再见"声明被返回/打印在屏幕上.第一个"hi"根本没有被删除.我如何退回/打印两者?

scheme racket

0
推荐指数
1
解决办法
4019
查看次数