Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

C++ Boost

转义列表分隔符

escaped_list_separator<Char, Traits = std::char_traits<Char> >

Theescaped_list_separator类是 TokenizerFunction 的一个实现。 escaped_list_separator 解析 csv(逗号分隔值)格式的超集。 此格式的示例如下所示。 假定使用分隔符、引号和转义符的默认字符。

字段 1,字段 2,字段 3
字段 1,"包含逗号的字段 2",字段 3
字段 1,包含 \"嵌入引号\" 的字段 2,字段 3
字段 1, 包含 \n 换行符的字段 2,字段 3
字段 1, 包含嵌入的 \\ 的字段 2,字段 3

字段通常用逗号分隔。 如果您想在字段中放入逗号,则需要用引号将其引起来。 此外,还支持 3 个转义序列

转义序列

结果

<escape><quote> <quote>
<escape>n 换行符
<escape><escape> <escape>

其中 <quote> 是指定为引号的任何字符,<escape> 是指定为转义字符的任何字符。

示例

// simple_example_2.cpp
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>

int main(){
   using namespace std;
   using namespace boost;
   string s = "Field 1,\"putting quotes around fields, allows commas\",Field 3";
   tokenizer<escaped_list_separator<char> > tok(s);
   for(tokenizer<escaped_list_separator<char> >::iterator beg=tok.begin(); beg!=tok.end();++beg){
       cout << *beg << "\n";
   }
}

 

构造和用法

escaped_list_separator 有 2 个构造函数。 它们如下:

explicit escaped_list_separator(Char e = '\\', Char c = ',',Char q = '\"')

参数

描述

e 指定用于转义序列的字符。 它默认为 C 风格的 \(反斜杠)。 但是,您可以通过传入不同的字符来覆盖默认值。 您可能想要这样做的一个示例是当您有许多 Windows 风格的文件名字段时。 您可以更改转义符为其他字符,而不是转义路径中的每个 \。
c 指定用于分隔字段的字符
q 指定用于引号的字符。

 

escaped_list_separator(string_type e, string_type c, string_type q):

参数

描述

e 字符串 e 中的任何字符都被视为转义字符。 如果给定空字符串,则没有转义字符。
c 字符串 c 中的任何字符都被视为分隔符。 如果给定空字符串,则没有分隔符字符。
q 字符串 q 中的任何字符都被视为引号。 如果给定空字符串,则没有引号字符。

 

要使用此类,请在 Tokenizer 包中任何需要 TokenizerFunction 的地方传递它的对象。

 

模板参数

参数 描述
Char 令牌中元素的类型,通常为char.
特性 Char 类型的特性类。 这用于比较 Char。 它默认为 std::char_traits<Char>

 

模型

TokenizerFunction

 


Valid HTML 4.01 Transitional

修订2006 年 12 月 25 日

版权所有 © 2001 John R. Bandela

根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)