123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /*
- *
- * Copyright (c) 1998-2002
- * John Maddock
- *
- * Use, modification and distribution are subject to the
- * Boost Software License, Version 1.0. (See accompanying file
- * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- *
- */
- /*
- * LOCATION: see http://www.boost.org for most recent version.
- * FILE regex_match_example.cpp
- * VERSION see <boost/version.hpp>
- * DESCRIPTION: ftp based regex_match example.
- */
-
- #include <boost/regex.hpp>
- #include <cstdlib>
- #include <stdlib.h>
- #include <string>
- #include <iostream>
- using namespace std;
- using namespace boost;
- regex expression("^([0-9]+)(\\-| |$)(.*)$");
- // process_ftp:
- // on success returns the ftp response code, and fills
- // msg with the ftp response message.
- int process_ftp(const char* response, std::string* msg)
- {
- cmatch what;
- if(regex_match(response, what, expression))
- {
- // what[0] contains the whole string
- // what[1] contains the response code
- // what[2] contains the separator character
- // what[3] contains the text message.
- if(msg)
- msg->assign(what[3].first, what[3].second);
- return ::atoi(what[1].first);
- }
- // failure did not match
- if(msg)
- msg->erase();
- return -1;
- }
- #if defined(BOOST_MSVC) || (defined(__BORLANDC__) && (__BORLANDC__ == 0x550))
- //
- // problem with std::getline under MSVC6sp3
- istream& getline(istream& is, std::string& s)
- {
- s.erase();
- char c = static_cast<char>(is.get());
- while(c != '\n')
- {
- s.append(1, c);
- c = static_cast<char>(is.get());
- }
- return is;
- }
- #endif
- int main(int argc, const char*[])
- {
- std::string in, out;
- do
- {
- if(argc == 1)
- {
- cout << "enter test string" << endl;
- getline(cin, in);
- if(in == "quit")
- break;
- }
- else
- in = "100 this is an ftp message text";
- int result;
- result = process_ftp(in.c_str(), &out);
- if(result != -1)
- {
- cout << "Match found:" << endl;
- cout << "Response code: " << result << endl;
- cout << "Message text: " << out << endl;
- }
- else
- {
- cout << "Match not found" << endl;
- }
- cout << endl;
- } while(argc == 1);
- return 0;
- }
|