0

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;
}

谢谢和问候,萨曼莎

4

0 回答 0