mirror of
				https://github.com/boostorg/algorithm.git
				synced 2025-10-29 23:01:42 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //  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;
 | |
| }
 |