我有性病串这样的:解析字符串“分隔符”可以成为数据的一部分吗?
用户名:消息
起初看起来这似乎是一个简单的问题,但这个问题是,这个名字的最后一个字符可能是一个“:”和第一个字母字符串的消息部分也可以是':'。用户也可以在他们的名字中有空格。
因此用户可能是名“一些名字:” ,可能键入一条消息“:你好”
将目光像: “一些名字:::你好”
我有用户名列表(矢量)虽然。
鉴于此,有没有一种方法可以从这种字符串中提取用户名? (理想情况下,无需通过用户列表进行迭代)
感谢
我有性病串这样的:解析字符串“分隔符”可以成为数据的一部分吗?
用户名:消息
起初看起来这似乎是一个简单的问题,但这个问题是,这个名字的最后一个字符可能是一个“:”和第一个字母字符串的消息部分也可以是':'。用户也可以在他们的名字中有空格。
因此用户可能是名“一些名字:” ,可能键入一条消息“:你好”
将目光像: “一些名字:::你好”
我有用户名列表(矢量)虽然。
鉴于此,有没有一种方法可以从这种字符串中提取用户名? (理想情况下,无需通过用户列表进行迭代)
感谢
如果您不能确定用户名不会包含“:”字符,并且您希望避免每次都检查整个列表,则可以尝试快捷方式。
保持只包含特殊字符的用户名的向量(我想象这是所有用户名的一小部分)。首先检查那些,如果你找到一个匹配,在[用户名]:后输入字符串。否则,你可以简单地对冒号做一个天真的分割。
我会用字符串标记
string text = "token, test string";
char_separator<char> sep(":");
tokenizer< char_separator<char> > tokens(text, sep);
BOOST_FOREACH(string t, tokens)
{
cout << t << "." << endl;
}
我会接近这个是简单地找到第一个冒号的方式。在那里拆分字符串,然后修剪剩下的两个字符串。
这并不完全清楚为什么有额外的冒号,如果他们是价值的一部分。如果他们需要被删除,那么你还需要删除它们。
你至少可以通过检查是否只有1个':'来将问题分解为简单情况和复杂情况。 – twain249 2012-04-18 19:55:47
消息如何分离?与':'? – AlexTheo 2012-04-18 19:56:59
使用':' 示例: 您:认为 – jmasterx 2012-04-18 19:57:51