summaryrefslogtreecommitdiff
path: root/libs/algorithm/string/example/split_example.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/algorithm/string/example/split_example.cpp')
-rw-r--r--libs/algorithm/string/example/split_example.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/libs/algorithm/string/example/split_example.cpp b/libs/algorithm/string/example/split_example.cpp
new file mode 100644
index 000000000..27e261c93
--- /dev/null
+++ b/libs/algorithm/string/example/split_example.cpp
@@ -0,0 +1,62 @@
+// Boost string_algo library example file ---------------------------------//
+
+// Copyright Pavol Droba 2002-2003. Use, modification and
+// distribution is 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)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#include <string>
+#include <vector>
+#include <iostream>
+#include <iterator>
+#include <functional>
+#include <boost/algorithm/string/classification.hpp>
+#include <boost/algorithm/string/split.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
+
+using namespace std;
+using namespace boost;
+
+int main()
+{
+ cout << "* Split Example *" << endl << endl;
+
+ string str1("abc-*-ABC-*-aBc");
+
+ cout << "Before: " << str1 << endl;
+
+ // Find all 'abc' substrings (ignoring the case)
+ // Create a find_iterator
+ typedef find_iterator<string::iterator> string_find_iterator;
+ for(string_find_iterator It=
+ make_find_iterator(str1, first_finder("abc", is_iequal()));
+ It!=string_find_iterator();
+ ++It)
+ {
+ cout << copy_range<std::string>(*It) << endl;
+ // shift all chars in the match by one
+ transform(
+ It->begin(), It->end(),
+ It->begin(),
+ bind2nd( plus<char>(), 1 ) );
+ }
+
+ // Print the string now
+ cout << "After: " << str1 << endl;
+
+ // Split the string into tokens ( use '-' and '*' as delimiters )
+ // We need copies of the input only, and adjacent tokens are compressed
+ vector<std::string> ResultCopy;
+ split(ResultCopy, str1, is_any_of("-*"), token_compress_on);
+
+ for(unsigned int nIndex=0; nIndex<ResultCopy.size(); nIndex++)
+ {
+ cout << nIndex << ":" << ResultCopy[nIndex] << endl;
+ };
+
+ cout << endl;
+
+ return 0;
+}