| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | <?xml version="1.0" encoding="utf-8"?> | 
					
						
							|  |  |  | <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" | 
					
						
							|  |  |  | "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd"> | 
					
						
							| 
									
										
										
										
											2006-08-16 07:10:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | <!-- Copyright (c) 2002-2006 Pavol Droba.
 | 
					
						
							|  |  |  |      Subject to the Boost Software License, Version 1.0.  | 
					
						
							|  |  |  |      (See accompanying file LICENSE-1.0 or  http://www.boost.org/LICENSE-1.0) | 
					
						
							|  |  |  | --> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | <section id="string_algo.rationale" last-revision="$Date$"> | 
					
						
							|  |  |  |     <title>Rationale</title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     <using-namespace name="boost"/> | 
					
						
							| 
									
										
										
										
											2004-07-14 21:46:50 +00:00
										 |  |  |     <using-namespace name="boost::algorithm"/> | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2004-07-14 21:46:50 +00:00
										 |  |  |    <section it="string_algo.locale"> | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         <title>Locales</title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         <para> | 
					
						
							|  |  |  |             Locales have a very close relation to string processing. They contain information about | 
					
						
							|  |  |  |             the character sets and are used, for example, to change the case of characters and  | 
					
						
							|  |  |  |             to classify the characters.  | 
					
						
							|  |  |  |         </para> | 
					
						
							|  |  |  |         <para> | 
					
						
							|  |  |  |             C++ allows to work with multiple different instances of locales at once. If an algorithm | 
					
						
							|  |  |  |             manipulates some data in a way that requires the usage of locales, there must be a way | 
					
						
							|  |  |  |             to specify them. However, one instance of locales is sufficient for most of the applications, | 
					
						
							| 
									
										
										
										
											2004-07-16 09:06:39 +00:00
										 |  |  |             and for a user it could be very tedious to specify which locales to use at every place  | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             where it is needed.  | 
					
						
							|  |  |  |         </para>  | 
					
						
							|  |  |  |         <para> | 
					
						
							|  |  |  |             Fortunately, the C++ standard allows to specify the <emphasis>global</emphasis> locales (using static member | 
					
						
							|  |  |  |             function <code>std:locale::global()</code>). When instantiating an | 
					
						
							|  |  |  |             <code>std::locale</code> class without explicit information, the instance will  | 
					
						
							| 
									
										
										
										
											2004-07-16 09:06:39 +00:00
										 |  |  |             be initialized with the <emphasis>global</emphasis> locale. This implies, that if an algorithm needs a locale, | 
					
						
							| 
									
										
										
										
											2004-07-15 21:47:22 +00:00
										 |  |  |             it should have an <code>std::locale</code> parameter defaulting to  <code>std::locale()</code>. | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             If a user needs to specify locales explicitly, she can do so. Otherwise the <emphasis>global</emphasis> | 
					
						
							|  |  |  |             locales are used. | 
					
						
							|  |  |  |         </para> | 
					
						
							|  |  |  |     </section> | 
					
						
							|  |  |  |     <section id="string_algo.regex"> | 
					
						
							|  |  |  |         <title>Regular Expressions</title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         <para> | 
					
						
							|  |  |  |             Regular expressions are an essential part of text processing. For this reason, the library  | 
					
						
							| 
									
										
										
										
											2004-07-15 21:47:22 +00:00
										 |  |  |             also provides regex variants of some algorithms. The library does not attempt to replace | 
					
						
							|  |  |  |             <libraryname>Boost.Regex</libraryname>; it merely wraps its functionality in a new interface. | 
					
						
							|  |  |  |             As a part of this library, regex algorithms integrate smoothly with other components, which  | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             brings additional value. | 
					
						
							|  |  |  |         </para> | 
					
						
							|  |  |  |     </section> | 
					
						
							|  |  |  | </section> |