
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> |
修订2006 年 12 月 25 日
版权所有 © 2001 John R. Bandela
根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制)