问题标签 [boost-tokenizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
831 浏览

c++ - boost::tokenizer 考虑分隔符之间没有标记

我正在使用 boost::tokenizer 来获取 ';' 从 a 中分离字段string。我能够检索如下代码所示的字段,但我有 2 个问题:

  1. 标记器是否提供了任何函数来根据提供的分隔符了解字符串中标记的数量?
  2. 假设测试字符串有 3 个字段a;b;c。以下代码将打印所有这些。但我也需要打印空字段。例如,在字符串a;;;b;c的情况下,令牌也应该不包含任何内容作为第二个和第三个元素。或者换句话说,第二个和第三个标记应该是空的。
0 投票
2 回答
949 浏览

c++ - Boost Tokenizer:额外空间?

我正在使用 Boost Tokenizer 来删除格式化的坐标,例如 (x,y)。但是,它在删除后添加了一个额外的空间。没有空格,但我不知道如何摆脱它。

在向量中,结果如下:

[x][y][空格]

0 投票
3 回答
893 浏览

c++ - 从 const char* 到迭代器错误的“未知转换” - 另一种方法

我正在执行以下操作:

期望使用boost::tokenizer构造函数

但 GCC 4.9.3 给了我:

现在,我已经看到了几个相关的 问题,其中的答案忘记了#include <algorithm>——但我已经把它包括在内了。是否还有其他缺失的包含,或者是另一个问题?

0 投票
1 回答
81 浏览

c++ - 我应该如何在 C++ 中读取和解析(真实、正确、功能齐全的)CSV?

我读了:

如何在 C++ 中读取和解析 CSV 文件?

但那里的标题相当具有误导性。它不是询问读取 CSV 本身,而是询问多行逗号分隔的无转义数据文件。

现在,我想解析实际的 CSV——正确的格式(符合RFC 4180)——带引号的字段以及带引号的字段中的换行符、逗号和双引号;并且至少可以选择将 CRLF 作为记录分隔符而不是 LF。

更具体地说:我可以从更简单的问题版本中扩展基于 boost-tokenizer 的建议以正确处理引用(和其他问题)吗?

0 投票
1 回答
278 浏览

c++ - C++ 中的 CSV 解析器不读取第一个元素

我提取了这段代码来解析一个 CSV 文件,但是它没有读取前 n-1 行的第一个元素。我不知道为什么,当我将数据复制到一个新的空文件中并将其另存为 CSV 文件时,错误消失并且工作正常。以下是原始(发生错误)和复制(未发生错误)CSV 文件的链接。你能帮我解释为什么会这样吗?

谢谢你。

0 投票
1 回答
994 浏览

c++ - 使用多个分隔符拆分字符串,允许引用值

文档为第二boost::escaped_list_separator个参数提供以下解释c

字符串 c 中的任何字符都被视为分隔符。

所以,我需要用多个分隔符分割字符串,允许引用的值,其中可以包含这些分隔符:

预期结果将是 [2; 14; 33; 50; AAA BBB]。但是,他的代码导致一堆空标记:

在此处输入图像描述

考虑到所有分隔符, Regularboost::char_separator会忽略所有这些空标记。似乎boost::escaped_list_separator也考虑了所有指定的分隔符,但产生空值。如果遇到多个连续的分隔符,是否会产生空标记?有没有办法避免这种情况?

如果始终正确,即只生成空标记,则很容易测试结果值并手动省略它们。但是,它可能会变得非常丑陋。例如,假设每个字符串都有 2 个实际值,并且可能有许多制表符和空格分隔这些值。然后将分隔符指定为L"\t "(即空格和制表符)将起作用,但会产生大量空标记。

0 投票
0 回答
696 浏览

c++ - boost tokenizer 解析带有嵌入双引号的 csv 文件

如果嵌入的双引号字符由一对双引号字符表示,是否有任何方法可以使用 c++ boost tokenizer 解析 CSV?

Wiki 的文章Comma-separated values每个嵌入的双引号字符必须由一对双引号字符表示,并提供以下 csv 文件示例:

默认的 boost tokenizertypedef tokenizer< escaped_list_separator<char> > tokenizer;会删除嵌入的配额,但如果使用 \" 而不是 "",则可以正常工作。

0 投票
0 回答
17 浏览

c++ - 使用 c++ 搜索一个 csv 文件,其中逗号作为分隔符,双引号作为转义符

基本上,我正在尝试编写一个代码来提示用户输入一个单词,因为我知道我的 csv 文件包含字符串作为条目,它会检索与用户提示的单词相似的所有条目。

假设用户输入以下单词:Younes

我的 csv 看起来像:

姓名、姓氏、年龄、爱好、地址
Younes, Thabet, 23, "足球,游泳", Chlef
Bilal, Boumad, 23, "象棋,慢跑", "Tipaza,Boumerdes"
Younes, Mohammed, 20, 舞蹈, 阿尔及尔

输出应该是(只显示一些列):
姓:Thabet
爱好:足球,游泳

姓:穆罕默德
爱好:舞蹈

首选提升令牌

0 投票
1 回答
270 浏览

c++ - Boost tokenizer 无法解析具有双引号字段的 csv 文件

我正在解析具有两列的.csv 文件。我正在尝试使用 csv 文件中的 boost tokenizer 解析行,其中行中的一个字段是双引号(例如:1,“test”)。在标记器之后,我在 tok (1,test) 中得到没有双引号的字段。

有没有办法用双引号获得第二个字段?

0 投票
2 回答
288 浏览

c++ - 如何使用 boost::tokenizer 作为 C++ 类成员?

我正在用 boost::tokenizer 替换 RWCTokenizer 并且我无法编译它,因为代码是当前设计的。这就是它现在基本上在做的事情:

所以基本上他们在 A 中设置解析,在 B 中获取标记,并在 C 中检查结尾。

因此,我需要在包含中声明迭代器和 tok 变量,以便 A、B 和 C 可以访问它们。但是当我编译时,myTok 说它需要 2 个参数,所以我不知道如何保存该信息。这是目前我试图做的:

我在网上看到的唯一示例是 ac main 函数中的 boost 代码,其中所有示例与 C++ 类示例相比。现在我唯一能想到的另一件事是在类的顶部声明 boost 的东西是静态的,这是我真的不想做的事情。

如果我可以保存 myTok.end() 部分,我应该能够编译。但我认为我需要保持结构,因为我正在解析的行被传递到 tok(myTokenLine_TMP, sep) 并且当我离开函数时它应该超出范围,因此保存 end() 部分将毫无用处。

那么如何在 C++ 类中做到这一点呢?