2021-06-03 12:22:37 +02:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" />
< meta http-equiv = "X-UA-Compatible" content = "IE=9" />
< meta name = "generator" content = "Doxygen 1.8.17" />
< meta name = "viewport" content = "width=device-width, initial-scale=1" />
< title > Leonetienne/Hazelnupp: Hazelnupp/StringTools.cpp Source File</ title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "jquery.js" ></ script >
< script type = "text/javascript" src = "dynsections.js" ></ script >
< link href = "search/search.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "search/searchdata.js" ></ script >
< script type = "text/javascript" src = "search/search.js" ></ script >
< script type = "text/x-mathjax-config" >
MathJax . Hub . Config ({
extensions : [ "tex2jax.js" ],
jax : [ "input/TeX" , "output/HTML-CSS" ],
});
</ script >
< script type = "text/javascript" async = "async" src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" ></ script >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" />
</ head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr style = "height: 56px;" >
< td id = "projectlogo" >< img alt = "Logo" src = "nupp_small.png" /></ td >
< td id = "projectalign" style = "padding-left: 0.5em;" >
< div id = "projectname" > Leonetienne/Hazelnupp
</ div >
< div id = "projectbrief" > Simple, easy to use, command line parameter interface</ div >
</ td >
</ tr >
</ tbody >
</ table >
</ div >
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox ( "searchBox" , "search" , false , 'Search' );
/* @license-end */
</ script >
< script type = "text/javascript" src = "menudata.js" ></ script >
< script type = "text/javascript" src = "menu.js" ></ script >
< script type = "text/javascript" >
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$ ( function () {
initMenu ( '' , true , false , 'search.php' , 'Search' );
$ ( document ). ready ( function () { init_search (); });
});
/* @license-end */ </ script >
< div id = "main-nav" ></ div >
<!-- window showing the filter options -->
< div id = "MSearchSelectWindow"
onmouseover = "return searchBox.OnSearchSelectShow()"
onmouseout = "return searchBox.OnSearchSelectHide()"
onkeydown = "return searchBox.OnSearchSelectKey(event)" >
</ div >
<!-- iframe showing the search results (closed by default) -->
< div id = "MSearchResultsWindow" >
< iframe src = "javascript:void(0)" frameborder = "0"
name = "MSearchResults" id = "MSearchResults" >
</ iframe >
</ div >
< div id = "nav-path" class = "navpath" >
< ul >
< li class = "navelem" >< a class = "el" href = "dir_0202e1e26df2e040f4dc3d434eecf04c.html" > Hazelnupp</ a ></ li > </ ul >
</ div >
</ div > <!-- top -->
< div class = "header" >
< div class = "headertitle" >
< div class = "title" > StringTools.cpp</ div > </ div >
</ div > <!--header-->
< div class = "contents" >
< a href = "StringTools_8cpp.html" > Go to the documentation of this file.</ a >< div class = "fragment" >< div class = "line" >< a name = "l00001" ></ a >< span class = "lineno" > 1</ span >   < span class = "preprocessor" > #include " < a class = "code" href = "StringTools_8h.html" > StringTools.h</ a > " </ span ></ div >
< div class = "line" >< a name = "l00002" ></ a >< span class = "lineno" > 2</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00003" ></ a >< span class = "lineno" > 3</ span >   < span class = "keyword" > using namespace </ span >< a class = "code" href = "namespaceHazelnp.html" > Hazelnp</ a > ;</ div >
< div class = "line" >< a name = "l00004" ></ a >< span class = "lineno" > 4</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00005" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#a4f1ff9fb44995407ea45b8c7c67ffeb6" > 5</ a ></ span >   < span class = "keywordtype" > bool</ span > < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#a4f1ff9fb44995407ea45b8c7c67ffeb6" > Internal::StringTools::Contains</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keyword" > const</ span > < span class = "keywordtype" > char</ span > c)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00006" ></ a >< span class = "lineno" > 6</ span >   {</ div >
< div class = "line" >< a name = "l00007" ></ a >< span class = "lineno" > 7</ span >   < span class = "keywordflow" > for</ span > (< span class = "keyword" > const</ span > < span class = "keywordtype" > char</ span > & i : str)</ div >
< div class = "line" >< a name = "l00008" ></ a >< span class = "lineno" > 8</ span >   < span class = "keywordflow" > if</ span > (i == c)</ div >
< div class = "line" >< a name = "l00009" ></ a >< span class = "lineno" > 9</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > true</ span > ;</ div >
< div class = "line" >< a name = "l00010" ></ a >< span class = "lineno" > 10</ span >   </ div >
< div class = "line" >< a name = "l00011" ></ a >< span class = "lineno" > 11</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00012" ></ a >< span class = "lineno" > 12</ span >   }</ div >
< div class = "line" >< a name = "l00013" ></ a >< span class = "lineno" > 13</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00014" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000" > 14</ a ></ span >   std::string < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000" > Internal::StringTools::Replace</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keyword" > const</ span > < span class = "keywordtype" > char</ span > find, < span class = "keyword" > const</ span > std::string& subst)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00015" ></ a >< span class = "lineno" > 15</ span >   {</ div >
< div class = "line" >< a name = "l00016" ></ a >< span class = "lineno" > 16</ span >   std::stringstream ss;</ div >
< div class = "line" >< a name = "l00017" ></ a >< span class = "lineno" > 17</ span >   </ div >
< div class = "line" >< a name = "l00018" ></ a >< span class = "lineno" > 18</ span >   < span class = "keywordflow" > for</ span > (std::size_t i = 0; i < str.length(); i++)</ div >
< div class = "line" >< a name = "l00019" ></ a >< span class = "lineno" > 19</ span >   {</ div >
< div class = "line" >< a name = "l00020" ></ a >< span class = "lineno" > 20</ span >   < span class = "keywordflow" > if</ span > (str[i] != find) ss << str[i];</ div >
< div class = "line" >< a name = "l00021" ></ a >< span class = "lineno" > 21</ span >   < span class = "keywordflow" > else</ span > ss << subst;</ div >
< div class = "line" >< a name = "l00022" ></ a >< span class = "lineno" > 22</ span >   }</ div >
< div class = "line" >< a name = "l00023" ></ a >< span class = "lineno" > 23</ span >   </ div >
< div class = "line" >< a name = "l00024" ></ a >< span class = "lineno" > 24</ span >   < span class = "keywordflow" > return</ span > ss.str();</ div >
< div class = "line" >< a name = "l00025" ></ a >< span class = "lineno" > 25</ span >   }</ div >
< div class = "line" >< a name = "l00026" ></ a >< span class = "lineno" > 26</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00027" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#afaebf388806c331db0757231b0366fd7" > 27</ a ></ span >   std::string < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000" > Internal::StringTools::Replace</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keyword" > const</ span > std::string& find, < span class = "keyword" > const</ span > std::string& subst)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00028" ></ a >< span class = "lineno" > 28</ span >   {</ div >
< div class = "line" >< a name = "l00029" ></ a >< span class = "lineno" > 29</ span >   < span class = "keywordflow" > if</ span > (find.length() == 0) < span class = "keywordflow" > return</ span > str;</ div >
2021-06-03 12:22:37 +02:00
< div class = "line" >< a name = "l00030" ></ a >< span class = "lineno" > 30</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00031" ></ a >< span class = "lineno" > 31</ span >   std::stringstream ss;</ div >
< div class = "line" >< a name = "l00032" ></ a >< span class = "lineno" > 32</ span >   </ div >
< div class = "line" >< a name = "l00033" ></ a >< span class = "lineno" > 33</ span >   std::size_t posFound = 0;</ div >
< div class = "line" >< a name = "l00034" ></ a >< span class = "lineno" > 34</ span >   std::size_t lastFound = 0;</ div >
< div class = "line" >< a name = "l00035" ></ a >< span class = "lineno" > 35</ span >   </ div >
< div class = "line" >< a name = "l00036" ></ a >< span class = "lineno" > 36</ span >   < span class = "keywordflow" > while</ span > (posFound != std::string::npos)</ div >
< div class = "line" >< a name = "l00037" ></ a >< span class = "lineno" > 37</ span >   {</ div >
< div class = "line" >< a name = "l00038" ></ a >< span class = "lineno" > 38</ span >   lastFound = posFound;</ div >
< div class = "line" >< a name = "l00039" ></ a >< span class = "lineno" > 39</ span >   posFound = str.find(find, posFound);</ div >
< div class = "line" >< a name = "l00040" ></ a >< span class = "lineno" > 40</ span >   </ div >
< div class = "line" >< a name = "l00041" ></ a >< span class = "lineno" > 41</ span >   < span class = "keywordflow" > if</ span > (posFound != std::string::npos)</ div >
< div class = "line" >< a name = "l00042" ></ a >< span class = "lineno" > 42</ span >   {</ div >
< div class = "line" >< a name = "l00043" ></ a >< span class = "lineno" > 43</ span >   ss << str.substr(lastFound, posFound - lastFound) << subst;</ div >
< div class = "line" >< a name = "l00044" ></ a >< span class = "lineno" > 44</ span >   posFound += find.length();</ div >
< div class = "line" >< a name = "l00045" ></ a >< span class = "lineno" > 45</ span >   }</ div >
< div class = "line" >< a name = "l00046" ></ a >< span class = "lineno" > 46</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00047" ></ a >< span class = "lineno" > 47</ span >   {</ div >
< div class = "line" >< a name = "l00048" ></ a >< span class = "lineno" > 48</ span >   ss << str.substr(lastFound, (str.length()) - lastFound);</ div >
< div class = "line" >< a name = "l00049" ></ a >< span class = "lineno" > 49</ span >   }</ div >
< div class = "line" >< a name = "l00050" ></ a >< span class = "lineno" > 50</ span >   }</ div >
< div class = "line" >< a name = "l00051" ></ a >< span class = "lineno" > 51</ span >   </ div >
< div class = "line" >< a name = "l00052" ></ a >< span class = "lineno" > 52</ span >   < span class = "keywordflow" > return</ span > ss.str();</ div >
< div class = "line" >< a name = "l00053" ></ a >< span class = "lineno" > 53</ span >   }</ div >
< div class = "line" >< a name = "l00054" ></ a >< span class = "lineno" > 54</ span >   </ div >
< div class = "line" >< a name = "l00055" ></ a >< span class = "lineno" > 55</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00056" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215" > 56</ a ></ span >   < span class = "keywordtype" > bool</ span > < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215" > Internal::StringTools::IsNumeric</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keyword" > const</ span > < span class = "keywordtype" > bool</ span > allowDecimalPoint)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00057" ></ a >< span class = "lineno" > 57</ span >   {</ div >
< div class = "line" >< a name = "l00058" ></ a >< span class = "lineno" > 58</ span >   < span class = "keywordflow" > if</ span > (str.length() == 0) < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00059" ></ a >< span class = "lineno" > 59</ span >   </ div >
< div class = "line" >< a name = "l00060" ></ a >< span class = "lineno" > 60</ span >   < span class = "keywordtype" > bool</ span > alreadyParsedDecimalPoint = < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00061" ></ a >< span class = "lineno" > 61</ span >   std::size_t digitCount = 0;</ div >
< div class = "line" >< a name = "l00062" ></ a >< span class = "lineno" > 62</ span >   </ div >
< div class = "line" >< a name = "l00063" ></ a >< span class = "lineno" > 63</ span >   < span class = "keywordflow" > for</ span > (std::size_t i = 0; i < str.length(); i++)</ div >
< div class = "line" >< a name = "l00064" ></ a >< span class = "lineno" > 64</ span >   {</ div >
< div class = "line" >< a name = "l00065" ></ a >< span class = "lineno" > 65</ span >   < span class = "keywordflow" > if</ span > (!(</ div >
< div class = "line" >< a name = "l00066" ></ a >< span class = "lineno" > 66</ span >   ((str[i] > = < span class = "charliteral" > ' 0' </ span > ) && (str[i] < = < span class = "charliteral" > ' 9' </ span > )) ||</ div >
< div class = "line" >< a name = "l00067" ></ a >< span class = "lineno" > 67</ span >   ((str[i] == < span class = "charliteral" > ' -' </ span > ) && (i == 0)) ||</ div >
< div class = "line" >< a name = "l00068" ></ a >< span class = "lineno" > 68</ span >   ((str[i] == < span class = "charliteral" > ' .' </ span > ) && (allowDecimalPoint) && (!alreadyParsedDecimalPoint) && (digitCount > 0))</ div >
< div class = "line" >< a name = "l00069" ></ a >< span class = "lineno" > 69</ span >   )) < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00070" ></ a >< span class = "lineno" > 70</ span >   </ div >
< div class = "line" >< a name = "l00071" ></ a >< span class = "lineno" > 71</ span >   </ div >
< div class = "line" >< a name = "l00072" ></ a >< span class = "lineno" > 72</ span >   < span class = "comment" > // Here we just have to check for the character. Not for any other conditions.</ span ></ div >
< div class = "line" >< a name = "l00073" ></ a >< span class = "lineno" > 73</ span >   < span class = "comment" > // Why? Because if these conditions failed, the function would have already returned false.</ span ></ div >
< div class = "line" >< a name = "l00074" ></ a >< span class = "lineno" > 74</ span >   < span class = "keywordflow" > if</ span > (((str[i] > = < span class = "charliteral" > ' 0' </ span > ) && (str[i] < = < span class = "charliteral" > ' 9' </ span > ))) digitCount++;</ div >
< div class = "line" >< a name = "l00075" ></ a >< span class = "lineno" > 75</ span >   < span class = "keywordflow" > if</ span > (str[i] == < span class = "charliteral" > ' .' </ span > ) alreadyParsedDecimalPoint = < span class = "keyword" > true</ span > ;</ div >
< div class = "line" >< a name = "l00076" ></ a >< span class = "lineno" > 76</ span >   }</ div >
< div class = "line" >< a name = "l00077" ></ a >< span class = "lineno" > 77</ span >   </ div >
< div class = "line" >< a name = "l00078" ></ a >< span class = "lineno" > 78</ span >   < span class = "comment" > // Even if we did not find any invalid chars, we should still return false, if we found no digits at all.</ span ></ div >
< div class = "line" >< a name = "l00079" ></ a >< span class = "lineno" > 79</ span >   < span class = "keywordflow" > return</ span > digitCount > 0;</ div >
< div class = "line" >< a name = "l00080" ></ a >< span class = "lineno" > 80</ span >   }</ div >
< div class = "line" >< a name = "l00081" ></ a >< span class = "lineno" > 81</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00082" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68" > 82</ a ></ span >   < span class = "keywordtype" > bool</ span > < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68" > Internal::StringTools::ParseNumber</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keywordtype" > bool</ span > & out_isInt, < span class = "keywordtype" > long</ span > < span class = "keywordtype" > double</ span > & out_number)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00083" ></ a >< span class = "lineno" > 83</ span >   {</ div >
< div class = "line" >< a name = "l00084" ></ a >< span class = "lineno" > 84</ span >   < span class = "keywordtype" > bool</ span > isDecimal = < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00085" ></ a >< span class = "lineno" > 85</ span >   </ div >
< div class = "line" >< a name = "l00086" ></ a >< span class = "lineno" > 86</ span >   < span class = "keywordflow" > if</ span > (str.length() == 0) < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00087" ></ a >< span class = "lineno" > 87</ span >   < span class = "keywordflow" > if</ span > (Contains(str, < span class = "charliteral" > ' .' </ span > )) isDecimal = < span class = "keyword" > true</ span > ;</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00088" ></ a >< span class = "lineno" > 88</ span >   </ div >
< div class = "line" >< a name = "l00089" ></ a >< span class = "lineno" > 89</ span >   < span class = "keywordflow" > if</ span > (isDecimal)</ div >
< div class = "line" >< a name = "l00090" ></ a >< span class = "lineno" > 90</ span >   {</ div >
< div class = "line" >< a name = "l00091" ></ a >< span class = "lineno" > 91</ span >   < span class = "keywordflow" > try</ span ></ div >
< div class = "line" >< a name = "l00092" ></ a >< span class = "lineno" > 92</ span >   {</ div >
< div class = "line" >< a name = "l00093" ></ a >< span class = "lineno" > 93</ span >   out_number = std::stold(str);</ div >
< div class = "line" >< a name = "l00094" ></ a >< span class = "lineno" > 94</ span >   out_isInt = < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00095" ></ a >< span class = "lineno" > 95</ span >   }</ div >
< div class = "line" >< a name = "l00096" ></ a >< span class = "lineno" > 96</ span >   < span class = "keywordflow" > catch</ span > (std::invalid_argument& )</ div >
< div class = "line" >< a name = "l00097" ></ a >< span class = "lineno" > 97</ span >   {</ div >
< div class = "line" >< a name = "l00098" ></ a >< span class = "lineno" > 98</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00099" ></ a >< span class = "lineno" > 99</ span >   }</ div >
< div class = "line" >< a name = "l00100" ></ a >< span class = "lineno" > 100</ span >   < span class = "keywordflow" > catch</ span > (std::out_of_range& )</ div >
< div class = "line" >< a name = "l00101" ></ a >< span class = "lineno" > 101</ span >   {</ div >
< div class = "line" >< a name = "l00102" ></ a >< span class = "lineno" > 102</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00103" ></ a >< span class = "lineno" > 103</ span >   }</ div >
< div class = "line" >< a name = "l00104" ></ a >< span class = "lineno" > 104</ span >   }</ div >
< div class = "line" >< a name = "l00105" ></ a >< span class = "lineno" > 105</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00106" ></ a >< span class = "lineno" > 106</ span >   {</ div >
< div class = "line" >< a name = "l00107" ></ a >< span class = "lineno" > 107</ span >   < span class = "keywordflow" > try</ span ></ div >
< div class = "line" >< a name = "l00108" ></ a >< span class = "lineno" > 108</ span >   {</ div >
< div class = "line" >< a name = "l00109" ></ a >< span class = "lineno" > 109</ span >   out_number = (< span class = "keywordtype" > long</ span > double)std::stoll(str);</ div >
< div class = "line" >< a name = "l00110" ></ a >< span class = "lineno" > 110</ span >   out_isInt = < span class = "keyword" > true</ span > ;</ div >
< div class = "line" >< a name = "l00111" ></ a >< span class = "lineno" > 111</ span >   }</ div >
< div class = "line" >< a name = "l00112" ></ a >< span class = "lineno" > 112</ span >   < span class = "keywordflow" > catch</ span > (std::invalid_argument& )</ div >
< div class = "line" >< a name = "l00113" ></ a >< span class = "lineno" > 113</ span >   {</ div >
< div class = "line" >< a name = "l00114" ></ a >< span class = "lineno" > 114</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00115" ></ a >< span class = "lineno" > 115</ span >   }</ div >
< div class = "line" >< a name = "l00116" ></ a >< span class = "lineno" > 116</ span >   < span class = "keywordflow" > catch</ span > (std::out_of_range& )</ div >
< div class = "line" >< a name = "l00117" ></ a >< span class = "lineno" > 117</ span >   {</ div >
< div class = "line" >< a name = "l00118" ></ a >< span class = "lineno" > 118</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > false</ span > ;</ div >
< div class = "line" >< a name = "l00119" ></ a >< span class = "lineno" > 119</ span >   }</ div >
< div class = "line" >< a name = "l00120" ></ a >< span class = "lineno" > 120</ span >   }</ div >
< div class = "line" >< a name = "l00121" ></ a >< span class = "lineno" > 121</ span >   </ div >
< div class = "line" >< a name = "l00122" ></ a >< span class = "lineno" > 122</ span >   < span class = "keywordflow" > return</ span > < span class = "keyword" > true</ span > ;</ div >
< div class = "line" >< a name = "l00123" ></ a >< span class = "lineno" > 123</ span >   }</ div >
< div class = "line" >< a name = "l00124" ></ a >< span class = "lineno" > 124</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00125" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1" > 125</ a ></ span >   std::vector< std::string> < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1" > Internal::StringTools::SplitString</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keyword" > const</ span > < span class = "keywordtype" > char</ span > delimiter)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00126" ></ a >< span class = "lineno" > 126</ span >   {</ div >
< div class = "line" >< a name = "l00127" ></ a >< span class = "lineno" > 127</ span >   < span class = "keywordflow" > if</ span > (str.length() == 0) < span class = "keywordflow" > return</ span > std::vector< std::string> ();</ div >
< div class = "line" >< a name = "l00128" ></ a >< span class = "lineno" > 128</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00129" ></ a >< span class = "lineno" > 129</ span >   < span class = "keywordflow" > return</ span > SplitString(str, delimiter);</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00130" ></ a >< span class = "lineno" > 130</ span >   }</ div >
< div class = "line" >< a name = "l00131" ></ a >< span class = "lineno" > 131</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00132" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#a8cb6e05d822c184a8e982327c01fdb03" > 132</ a ></ span >   std::vector< std::string> < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1" > Internal::StringTools::SplitString</ a > (< span class = "keyword" > const</ span > std::string& str, < span class = "keyword" > const</ span > std::string& delimiter)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00133" ></ a >< span class = "lineno" > 133</ span >   {</ div >
< div class = "line" >< a name = "l00134" ></ a >< span class = "lineno" > 134</ span >   < span class = "keywordflow" > if</ span > (str.length() == 0) < span class = "keywordflow" > return</ span > std::vector< std::string> ();</ div >
2021-06-03 12:22:37 +02:00
< div class = "line" >< a name = "l00135" ></ a >< span class = "lineno" > 135</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00136" ></ a >< span class = "lineno" > 136</ span >   std::vector< std::string> parts;</ div >
< div class = "line" >< a name = "l00137" ></ a >< span class = "lineno" > 137</ span >   </ div >
< div class = "line" >< a name = "l00138" ></ a >< span class = "lineno" > 138</ span >   < span class = "keywordflow" > if</ span > (delimiter.length() == 0) < span class = "comment" > // If the delimiter is "" (empty), just split between every single char. Not useful, but logical</ span ></ div >
< div class = "line" >< a name = "l00139" ></ a >< span class = "lineno" > 139</ span >   {</ div >
< div class = "line" >< a name = "l00140" ></ a >< span class = "lineno" > 140</ span >   < span class = "keywordflow" > for</ span > (std::size_t i = 0; i < str.length(); i++)</ div >
< div class = "line" >< a name = "l00141" ></ a >< span class = "lineno" > 141</ span >   {</ div >
< div class = "line" >< a name = "l00142" ></ a >< span class = "lineno" > 142</ span >   parts.push_back(std::string({ str[i] }));</ div >
< div class = "line" >< a name = "l00143" ></ a >< span class = "lineno" > 143</ span >   }</ div >
< div class = "line" >< a name = "l00144" ></ a >< span class = "lineno" > 144</ span >   < span class = "keywordflow" > return</ span > parts;</ div >
< div class = "line" >< a name = "l00145" ></ a >< span class = "lineno" > 145</ span >   }</ div >
< div class = "line" >< a name = "l00146" ></ a >< span class = "lineno" > 146</ span >   </ div >
< div class = "line" >< a name = "l00147" ></ a >< span class = "lineno" > 147</ span >   std::size_t posFound = 0;</ div >
< div class = "line" >< a name = "l00148" ></ a >< span class = "lineno" > 148</ span >   std::size_t lastFound = 0;</ div >
< div class = "line" >< a name = "l00149" ></ a >< span class = "lineno" > 149</ span >   </ div >
< div class = "line" >< a name = "l00150" ></ a >< span class = "lineno" > 150</ span >   < span class = "keywordflow" > while</ span > (posFound != std::string::npos)</ div >
< div class = "line" >< a name = "l00151" ></ a >< span class = "lineno" > 151</ span >   {</ div >
< div class = "line" >< a name = "l00152" ></ a >< span class = "lineno" > 152</ span >   lastFound = posFound;</ div >
< div class = "line" >< a name = "l00153" ></ a >< span class = "lineno" > 153</ span >   posFound = str.find(delimiter, posFound);</ div >
2021-06-03 12:22:37 +02:00
< div class = "line" >< a name = "l00154" ></ a >< span class = "lineno" > 154</ span >   </ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00155" ></ a >< span class = "lineno" > 155</ span >   std::string found;</ div >
< div class = "line" >< a name = "l00156" ></ a >< span class = "lineno" > 156</ span >   </ div >
< div class = "line" >< a name = "l00157" ></ a >< span class = "lineno" > 157</ span >   < span class = "keywordflow" > if</ span > (posFound != std::string::npos)</ div >
< div class = "line" >< a name = "l00158" ></ a >< span class = "lineno" > 158</ span >   {</ div >
< div class = "line" >< a name = "l00159" ></ a >< span class = "lineno" > 159</ span >   found = str.substr(lastFound, posFound - lastFound);</ div >
< div class = "line" >< a name = "l00160" ></ a >< span class = "lineno" > 160</ span >   posFound += delimiter.length();</ div >
< div class = "line" >< a name = "l00161" ></ a >< span class = "lineno" > 161</ span >   }</ div >
< div class = "line" >< a name = "l00162" ></ a >< span class = "lineno" > 162</ span >   < span class = "keywordflow" > else</ span ></ div >
< div class = "line" >< a name = "l00163" ></ a >< span class = "lineno" > 163</ span >   {</ div >
< div class = "line" >< a name = "l00164" ></ a >< span class = "lineno" > 164</ span >   found = str.substr(lastFound, str.length() - lastFound);</ div >
< div class = "line" >< a name = "l00165" ></ a >< span class = "lineno" > 165</ span >   }</ div >
< div class = "line" >< a name = "l00166" ></ a >< span class = "lineno" > 166</ span >   </ div >
< div class = "line" >< a name = "l00167" ></ a >< span class = "lineno" > 167</ span >   parts.push_back(found);</ div >
< div class = "line" >< a name = "l00168" ></ a >< span class = "lineno" > 168</ span >   }</ div >
< div class = "line" >< a name = "l00169" ></ a >< span class = "lineno" > 169</ span >   </ div >
< div class = "line" >< a name = "l00170" ></ a >< span class = "lineno" > 170</ span >   < span class = "keywordflow" > return</ span > parts;</ div >
< div class = "line" >< a name = "l00171" ></ a >< span class = "lineno" > 171</ span >   }</ div >
< div class = "line" >< a name = "l00172" ></ a >< span class = "lineno" > 172</ span >   </ div >
2021-08-04 21:17:44 +02:00
< div class = "line" >< a name = "l00173" ></ a >< span class = "lineno" >< a class = "line" href = "classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c" > 173</ a ></ span >   std::string < a class = "code" href = "classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c" > Internal::StringTools::ToLower</ a > (< span class = "keyword" > const</ span > std::string& str)</ div >
2021-06-03 13:43:05 +02:00
< div class = "line" >< a name = "l00174" ></ a >< span class = "lineno" > 174</ span >   {</ div >
< div class = "line" >< a name = "l00175" ></ a >< span class = "lineno" > 175</ span >   std::stringstream ss;</ div >
< div class = "line" >< a name = "l00176" ></ a >< span class = "lineno" > 176</ span >   < span class = "keywordflow" > for</ span > (std::size_t i = 0; i < str.length(); i++)</ div >
< div class = "line" >< a name = "l00177" ></ a >< span class = "lineno" > 177</ span >   {</ div >
< div class = "line" >< a name = "l00178" ></ a >< span class = "lineno" > 178</ span >   < span class = "keywordflow" > if</ span > ((str[i] > = < span class = "charliteral" > ' A' </ span > ) && (str[i] < = < span class = "charliteral" > ' Z' </ span > )) ss << (char)(((< span class = "keywordtype" > int</ span > )str[i]) + 32);</ div >
< div class = "line" >< a name = "l00179" ></ a >< span class = "lineno" > 179</ span >   < span class = "keywordflow" > else</ span > < span class = "keywordflow" > if</ span > (str[i] == -60) ss << (char)-28; < span class = "comment" > // AE => ae</ span ></ div >
< div class = "line" >< a name = "l00180" ></ a >< span class = "lineno" > 180</ span >   < span class = "keywordflow" > else</ span > < span class = "keywordflow" > if</ span > (str[i] == -42) ss << (char)-10; < span class = "comment" > // OE => oe</ span ></ div >
< div class = "line" >< a name = "l00181" ></ a >< span class = "lineno" > 181</ span >   < span class = "keywordflow" > else</ span > < span class = "keywordflow" > if</ span > (str[i] == -36) ss << (char)-4; < span class = "comment" > // UE => ue</ span ></ div >
< div class = "line" >< a name = "l00182" ></ a >< span class = "lineno" > 182</ span >   < span class = "keywordflow" > else</ span > ss << str[i];</ div >
< div class = "line" >< a name = "l00183" ></ a >< span class = "lineno" > 183</ span >   }</ div >
< div class = "line" >< a name = "l00184" ></ a >< span class = "lineno" > 184</ span >   </ div >
< div class = "line" >< a name = "l00185" ></ a >< span class = "lineno" > 185</ span >   < span class = "keywordflow" > return</ span > ss.str();</ div >
< div class = "line" >< a name = "l00186" ></ a >< span class = "lineno" > 186</ span >   }</ div >
2021-06-03 12:22:37 +02:00
</ div > <!-- fragment --> </ div > <!-- contents -->
2021-09-05 12:12:03 +02:00
< div class = "ttc" id = "anamespaceHazelnp_html" >< div class = "ttname" >< a href = "namespaceHazelnp.html" > Hazelnp</ a ></ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "CmdArgsInterface_8h_source.html#l00009" > CmdArgsInterface.h:9</ a ></ div ></ div >
2021-08-04 21:17:44 +02:00
< div class = "ttc" id = "aclassHazelnp_1_1Internal_1_1StringTools_html_a4f1ff9fb44995407ea45b8c7c67ffeb6" >< div class = "ttname" >< a href = "classHazelnp_1_1Internal_1_1StringTools.html#a4f1ff9fb44995407ea45b8c7c67ffeb6" > Hazelnp::Internal::StringTools::Contains</ a ></ div >< div class = "ttdeci" > static bool Contains(const std::string & str, const char c)</ div >< div class = "ttdoc" > Will return wether or not a given char is in a string.</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "StringTools_8cpp_source.html#l00005" > StringTools.cpp:5</ a ></ div ></ div >
< div class = "ttc" id = "aclassHazelnp_1_1Internal_1_1StringTools_html_a10f61d7d8bcbfee50882bae801c0e68c" >< div class = "ttname" >< a href = "classHazelnp_1_1Internal_1_1StringTools.html#a10f61d7d8bcbfee50882bae801c0e68c" > Hazelnp::Internal::StringTools::ToLower</ a ></ div >< div class = "ttdeci" > static std::string ToLower(const std::string & str)</ div >< div class = "ttdoc" > Will make a string all lower-case.</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "StringTools_8cpp_source.html#l00173" > StringTools.cpp:173</ a ></ div ></ div >
< div class = "ttc" id = "aclassHazelnp_1_1Internal_1_1StringTools_html_ac45f8b6d0572443e9d2597447091b000" >< div class = "ttname" >< a href = "classHazelnp_1_1Internal_1_1StringTools.html#ac45f8b6d0572443e9d2597447091b000" > Hazelnp::Internal::StringTools::Replace</ a ></ div >< div class = "ttdeci" > static std::string Replace(const std::string & str, const char find, const std::string & subst)</ div >< div class = "ttdoc" > Will replace a part of a string with another string.</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "StringTools_8cpp_source.html#l00014" > StringTools.cpp:14</ a ></ div ></ div >
< div class = "ttc" id = "aclassHazelnp_1_1Internal_1_1StringTools_html_a3cc71bfffcad9a4334e74aac69dbfd68" >< div class = "ttname" >< a href = "classHazelnp_1_1Internal_1_1StringTools.html#a3cc71bfffcad9a4334e74aac69dbfd68" > Hazelnp::Internal::StringTools::ParseNumber</ a ></ div >< div class = "ttdeci" > static bool ParseNumber(const std::string & str, bool & out_isInt, long double & out_number)</ div >< div class = "ttdoc" > Will convert the number in str to a number.</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "StringTools_8cpp_source.html#l00082" > StringTools.cpp:82</ a ></ div ></ div >
< div class = "ttc" id = "aclassHazelnp_1_1Internal_1_1StringTools_html_aaf3aae30ed06c37d18f79b8450061ad1" >< div class = "ttname" >< a href = "classHazelnp_1_1Internal_1_1StringTools.html#aaf3aae30ed06c37d18f79b8450061ad1" > Hazelnp::Internal::StringTools::SplitString</ a ></ div >< div class = "ttdeci" > static std::vector< std::string > SplitString(const std::string & str, const char delimiter)</ div >< div class = "ttdoc" > Will split a string by a delimiter char. The delimiter will be excluded!</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "StringTools_8cpp_source.html#l00125" > StringTools.cpp:125</ a ></ div ></ div >
< div class = "ttc" id = "aclassHazelnp_1_1Internal_1_1StringTools_html_a1abf1454a223165acfb52f2a246c8215" >< div class = "ttname" >< a href = "classHazelnp_1_1Internal_1_1StringTools.html#a1abf1454a223165acfb52f2a246c8215" > Hazelnp::Internal::StringTools::IsNumeric</ a ></ div >< div class = "ttdeci" > static bool IsNumeric(const std::string & str, const bool allowDecimalPoint=false)</ div >< div class = "ttdoc" > Will return true if the given string consists only of digits (including signage)</ div >< div class = "ttdef" >< b > Definition:</ b > < a href = "StringTools_8cpp_source.html#l00056" > StringTools.cpp:56</ a ></ div ></ div >
2021-06-03 12:22:37 +02:00
< div class = "ttc" id = "aStringTools_8h_html" >< div class = "ttname" >< a href = "StringTools_8h.html" > StringTools.h</ a ></ div ></ div >
<!-- start footer part -->
< hr class = "footer" />< address class = "footer" >< small >
2021-09-05 12:12:03 +02:00
Generated on Sun Sep 5 2021 12:11:50 for Leonetienne/Hazelnupp by   < a href = "http://www.doxygen.org/index.html" >
2021-06-03 12:22:37 +02:00
< img class = "footer" src = "doxygen.png" alt = "doxygen" />
</ a > 1.8.17
</ small ></ address >
</ body >
</ html >