0

要件-> 文字列から部分文字列を抽出します。格納する単語は太字で表示されます

サンプル文字列 -> "Mon Dec 10 23:04:20 2012 [pid 3194] [ftp] OK UPLOAD: Client "192.168.10.14", "/pub/upload/Untitleppppp.txt", 80 bytes, 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