将字符串拆分为从日志文件中提取的子字符串

时间:2012-12-10 14:57:36

标签: c++

要求 - > 从字符串中提取子字符串。存储的字以粗体显示

示例字符串 - > “2012年12月10日23:04:20 [pid 3194] [ftp] 确定上传:客户端”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;
}

谢谢和问候, 萨曼莎

0 个答案:

没有答案