Requirement->要从字符串中提取子字符串。要存储的单词以粗体显示
示例字符串-> “2012 年 12 月 10 日星期一 23:04:20 [pid 3194] [ftp] OK 上传:客户端“192.168.10.14”、“/pub/upload/Untitleppppp.txt”、80 字节、0.62Kbyte/sec ” // 这个示例字符串是通过其他函数从 ftp 日志中检索到的。
我已经实现了从上面的字符串中提取值的函数。如果我的方法是正确的,我不是很自信?各位大侠能否发表一下看法。
其次,假设将来,我想获取样本字符串中 80 个字节的传输字节数,我将如何实现这一点。目前,我的函数通过空格分隔符将字符串分解为向量,所以如果想知道字节数,我会得到 80 个字节而不是 80 个字节。如果上传或下载失败,我们不会得到这个子字符串。
任何想法都会对我有所帮助。
bool SplitString( const std::string& logString, std::string& type, std::string& status, std::string& speed )
{
bool result = true;
std::vector<std::string> splitVector ;
// split the string and puhback into vector.
boost::split(splitVector,logString, boost::is_any_of("\t "));
typedef std::vector<std::string>::const_iterator iter;
iter iterString = find(splitVector.begin(), splitVector.end(), "[ftp]") ;
if( iterString == splitVector.end() )
{
std::cout <<"Ftp Log is requested .. But this is not a ftp log try again" ;
result = false;
}
if( result == true )
{
std::cout << " pos val = " << *iterString ;
status = *(++iterString);
type = *(++iterString);
speed = splitVector.back();
}
return result;
}
谢谢和问候,萨曼莎