解析字符串,其中"separator"可以是数据的一部分?
Parse string where "separator" can be part of data?
我有这样的标准字符串:
用户名:消息
乍一看,这似乎是一个简单的问题,但这个问题在于名称的最后一个字符可能是":",字符串的消息部分的第一个字母也可能是":"。用户的名称中也可以有空格。
所以一个用户可能是名字"某个名字:"并可能键入消息 ' : 您好'
看起来像:"一些名字: : : 你好"
不过,我确实有用户名列表(向量)。
鉴于此,有没有办法从这种字符串中提取用户名?(理想情况下,不必循环访问用户列表)
谢谢
尝试像 (w+?): w+
这样的正则表达式。
如果您无法确定用户名不包含":"字符,并且希望避免每次都迭代整个列表进行检查,则可以尝试快捷方式。
只保留包含特殊字符的用户名的向量(我想象这是所有用户名的一小部分)。首先检查这些,如果找到匹配项,请取 [用户名] 后面的字符串:。否则,您可以简单地对冒号进行天真的拆分。
我会使用字符串标记
string text = "token, test string";
char_separator<char> sep(":");
tokenizer< char_separator<char> > tokens(text, sep);
BOOST_FOREACH(string t, tokens)
{
cout << t << "." << endl;
}
我处理这个问题的方法是简单地找到第一个冒号。在那里拆分字符串,然后修剪剩余的两个字符串。
我不完全清楚为什么会有额外的冒号以及它们是否是值的一部分。如果需要删除它们,那么您还需要将它们删除。
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- 如何在Qt TableView中将列的宽度调整为数据并将最后一部分拉伸在一起
- C++11 标准中的哪一部分规定了基元数据类型大小之间的相对顺序?
- 通过RecvFrom(UDP)接收数据包的一部分
- 为什么静态数据成员在 C++ 中不是对象的一部分
- 解析字符串,其中"separator"可以是数据的一部分?
- 使用C++当我同时具有整数和字符数组时,如何将.txt文件中的数据作为链表的一部分访问
- 将数据的某一部分从contst char*数组复制到另一个const char*数组中
- c++从文件的一部分加载数据