我有性病串這樣的:解析字符串「分隔符」可以成爲數據的一部分嗎?
用戶名:消息
起初看起來這似乎是一個簡單的問題,但這個問題是,這個名字的最後一個字符可能是一個「:」和第一個字母字符串的消息部分也可以是':'。用戶也可以在他們的名字中有空格。
因此用戶可能是名「一些名字:」 ,可能鍵入一條消息「:你好」
將目光像: 「一些名字:::你好」
我有用戶名列表(矢量)雖然。
鑑於此,有沒有一種方法可以從這種字符串中提取用戶名? (理想情況下,無需通過用戶列表進行迭代)
感謝
我有性病串這樣的:解析字符串「分隔符」可以成爲數據的一部分嗎?
用戶名:消息
起初看起來這似乎是一個簡單的問題,但這個問題是,這個名字的最後一個字符可能是一個「:」和第一個字母字符串的消息部分也可以是':'。用戶也可以在他們的名字中有空格。
因此用戶可能是名「一些名字:」 ,可能鍵入一條消息「:你好」
將目光像: 「一些名字:::你好」
我有用戶名列表(矢量)雖然。
鑑於此,有沒有一種方法可以從這種字符串中提取用戶名? (理想情況下,無需通過用戶列表進行迭代)
感謝
如果您不能確定用戶名不會包含「:」字符,並且您希望避免每次都檢查整個列表,則可以嘗試快捷方式。
保持只包含特殊字符的用戶名的向量(我想象這是所有用戶名的一小部分)。首先檢查那些,如果你找到一個匹配,在[用戶名]:後輸入字符串。否則,你可以簡單地對冒號做一個天真的分割。
我會用字符串標記
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