- Notifications
You must be signed in to change notification settings - Fork0
Dev#226
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Merged
Dev#226
Changes fromall commits
Commits
Show all changes
222 commits Select commitHold shift + click to select a range
a428322 #3 - Create Visual Studio 2022 project
schmoukb3d0cbc #2 - Create empty module cppstrings.h.
schmouk0b4227d #3 - Create Visual Studio 2022 project
schmouk41767da #4 - Modify .gitignore
schmouk5fc2724 #6 - Implement specialized class CppString
schmoukf7dd584 #7 - Implement specialized class CppWString
schmoukafa1687 #5 - Create templated base class CppStringT<>
schmouk266fe34 #60 - Implement method is_punctuation
schmouk3fd2973 #30 - Implement method CppStringT::isspace()
schmoukb606e4d #60 - Implement method is_punctuation
schmoukf28a337 #30 - Implement method CppStringT::isspace()
schmoukc12ba5f #61- Implement method is_words_sep
schmouka45bc56 #35 - Implement method CppStringT::lower()
schmouk9fb272f #55 - Implement method CppStringT::upper()
schmouk60782bb #8 - Implement method CppStringT::capitalize()
schmouka3c86ef #10 - Implement method CppStringT::center()
schmouk1dee9cf #16 - Implement method CppStringT::find()
schmouk9fe08ff #11 - Implement method CppStringT::count()
schmoukf3cfc00 #12 - Implement method CppStringT::count_n()
schmouk224de07 #17 - Implement method CppStringT::find_n()
schmoukf82fc5d #62 - Implement exception CppStringT::NotFoundException
schmoukfc98a07 #19 - Implement method CppStringT::index()
schmoukb428966 #20 - Implement method CppStringT::index_n()
schmoukc368826 #42 - Implement method CppStringT::rfind()
schmouk5d49ab1 #43 - Implement method CppStringT::rindex()
schmouk895404b #66 - Fix methods find() and find_n()
schmouk8a666e5 #67 - Fix methods index() and index_n()
schmouk7eb0631 #68 - Fix method rfind()
schmouk14ecbfe #64 - Implement method rfind_n()
schmouk2c76cd6 #69 - Fix method rindex()
schmoukeab2dab #65 - Implement method rindex_n()
schmouke3d8f11 #13 - Implement method CppStringT::endswith()
schmouk11cae64 #14 - Implement method CppStringT::endswith_n()
schmouk14054fb #15 - Implement method CppStringT::expand_tabs()
schmouk4b0c706 #21 - Implement method CppStringT::isalnum()
schmouk6ca96ba #22 - Implement method CppStringT::isalpha()
schmouk0f1e18f #71 - Modify method is_punctuation()
schmoukf4c308c #70 - Modify method is_space()
schmouk4903ec2 #23 - Implement method CppStringT::isascii()
schmouk66d1acd #24 - Implement method CppStringT::isdecimal()
schmouk0bd3d0a #25 - Implement method CppStringT::isdigit()
schmouk27edefc #26 - Implement method CppStringT::isidentifier()
schmoukb41823b #27 - Implement method CppStringT::islower()
schmoukf8f6970 #28 - Implement method CppStringT::isnumeric()
schmouk46387e1 #29 - Implement method CppStringT::isprintable()
schmoukbee370f #31 - Implement method CppStringT::istitle()
schmouk4ee68e3 #32 - Implement method CppStringT::isupper()
schmouke0f0489 #33 - Implement method CppStringT::join()
schmoukfad6641 #34 - Implement method CppStringT::ljust()
schmoukb6b54d6 #36 - Implement method CppStringT::lstrip()
schmouk76a222e #38 - Implement method CppStringT::partition()
schmouka9733c0 #39 - Implement method CppStringT::removeprefix()
schmoukde3e8e0 #40 - Implement method CppStringT::removesuffix()
schmoukf788380 #41 - Implement method CppStringT::replace()
schmoukfaaa942 #44 - Implement method CppStringT::rjust()
schmouk8126e7a #41 - Implement method CppStringT::replace()
schmouk6d3729e #45 - Implement method CppStringT::rpartition()
schmoukb235aef #46 - Implement method CppStringT::rsplit()
schmouk861e82c #73 - Refactor method CppStringT::rsplit()
schmouka66f7b5 #47 - Implement method CppStringT::rstrip()
schmouk2424122 #48 - Implement method CppStringT::split()
schmouk90310d7 #49 - Implement method CppStringT::splitlines()
schmouk0b9b7e7 #50 - Implement method CppStringT::startswith()
schmouk9845bab #74 - Implement method CppStringT::startswith_n()
schmouk7351b16 #51 - Implement method CppStringT::strip()
schmouk00815f4 #52 - Implement method CppStringT::swapcase()
schmouk6996af3 #53 - Implement method CppStringT::title()
schmouk65b40a7 #56 - Implement method CppStringT::zfill()
schmouk42928ad #75 - Implement method CppStringT::substr()
schmouk122dfd1 #57 - Implement operator ""cs
schmouka7aab2b #58 - Implement operator ""csv
schmouk9e8fa92 #37 - Implement method CppStringT::maketrans()
schmouk1e776b1 #76 - Enhance class CppStringT::TransTable
schmoukcfdb448 #54 - Implement method CppStringT::translate()
schmouk090b04c #77 - Create a unit test solution in a new branch dev/tests
schmouk0bddd1f #77 - Create a unit test solution in a new branch dev/tests
schmouk516d824 #78 - Test pcs::is_alpha() for char and wchar_t
schmouk11e0bb7 #79 - Test pcs::is_ascii() for char and wchar_t
schmouk23f2290 #80 - Test pcs::is_decimal() for char and wchar_t
schmoukb4f6791 #81 - Test pcs::is_id_continue() for char and wchar_t
schmouk7964ace #82 - Test pcs::is_id_start() for char and wchar_t
schmouk6edec7a #83 - Test pcs::is_lower() for char and wchar_t
schmoukaa12293 84 - Test pcs::is_printable() for char and wchar_t
schmoukd0a6f1c #85 - Test pcs::is_punctuation() for char and wchar_t
schmouk0eacd20 #86 - Test pcs::is_space() for char and wchar_t
schmouk0575557 #87 - Test pcs::is_upper() for char and wchar_t
schmouk2d6e5cd #88 - Test pcs::swap_case() for char and wchar_t
schmouk060d0e6 #89 - Test pcs::to_lower() for char and wchar_t
schmoukd4d697b #90 - Test pcs::to_upper() for char and wchar_t
schmouk37f45be #91 - Test pcs::operator""cs for char and wchar_t
schmouk435385f #92 - Test pcs::operator""csv for char and wchar_t
schmouk345ed73 #93 - Test CppStringT::TransTable constructor #1 with char and wchar_t
schmouk166e6e2 #94 - Test CppStringT::TransTable constructor #2 with char and wchar_t
schmouk151260c #95 - Test CppStringT::TransTable constructor #3 with char and wchar_t
schmouk7f12c48 #96 - Test CppStringT::TransTable constructor #4 with char and wchar_t
schmouk61cdb2e #97 - Test CppStringT::TransTable constructor #5 with char and wchar_t
schmouk59d8d80 #98 - Test CppStringT::TransTable constructor #6 with char and wchar_t
schmoukadde769 #99 - Test CppStringT::TransTable constructor #7 with char and wchar_t
schmouk6e166c8 #100 - Test CppStringT::TransTable constructor #8 with char and wchar_t
schmoukde72dc6 #101 - Test CppStringT::TransTable constructor #9 with char and wchar_t
schmouke861148 #104 - Test CppStringT::TransTable empty constructor with char and wc…
schmouk4d1fa4d #105 - Test CppStringT::TransTable copy constructor with char and wch…
schmouk320109e #106 - Test CppStringT::TransTable move constructor with char and wch…
schmouk8a94ae4 #107 - Test CppStringT::TransTable copy assignment with char and wchar_t
schmouk755de78 #108 - Test CppStringT::TransTable move assignment with char and wchar_t
schmouke67fa5a #109 - Test CppStringT::TransTable std::map-assignment with char and …
schmoukb9efdfe #110 - Test CppStringT::TransTable::operator[] with char and wchar_t
schmouk31399dd #111 - Test CppStringT empty constructor with char and wchar_t
schmouk8b862ac #112 - Test CppStringT copy constructor with char and wchar_t
schmouk8ada1a9 #113 - Test CppStringT move constructor with char and wchar_t
schmoukf39c9aa #114 - Test CppStringT constructor #6 with char and wchar_t
schmoukab90c70 #115 - Test CppStringT constructor #7 with char and wchar_t
schmouk8893fd5 #116 - Test CppStringT constructor #8 with char and wchar_t
schmoukc6268ec #117 - Test CppStringT constructor #9 with char and wchar_t
schmoukfb662fc #118 - Test CppStringT constructor #10 with char and wchar_t
schmoukceebe19 #119 - Test CppStringT constructor #11 with char and wchar_t
schmoukb02b516 #120 - Test CppStringT constructor #12 with char and wchar_t
schmoukcf190aa #121 - Test CppStringT constructor #13 with char and wchar_t
schmouk6c41fde #122 - Test CppStringT constructor #14 with char and wchar_t
schmouk487b5cc #123 - Test CppStringT constructor #15 with char and wchar_t
schmouk401945c #124 - Test CppStringT constructor #16 with char and wchar_t
schmouke53011d #179 - Test CppStringT constructor #19 with char and wchar_t
schmoukb1c2abc #127 - Test CppStringT::capitalize() with char and wchar_t
schmouk9814e6d #128 - Test CppStringT::center() with char and wchar_t
schmouka54feb6 #129 - Test CppStringT::count() with char and wchar_t
schmouk97f6bb1 #130 - Test CppStringT::count_n() with char and wchar_t
schmouk33b1083 #131 - Test CppStringT::ends_with() with char and wchar_t
schmoukef16d45 #132 - Test CppStringT::ends_with_n() with char and wchar_t
schmoukacd45ac #133 - Test CppStringT::expand_tabs() with char and wchar_t
schmoukfb4586d #186 - Implement new signatures for method CppStringT::find()
schmouk1c6ce39 #187 - Implement new signatures for CppStringT::find_n()
schmouk63bcf2a #187 - Implement new signatures for CppStringT::find_n()
schmoukcc418b2 #134 - Test CppStringT::find() with char and wchar_t
schmouk7636c39 #135 - Test CppStringT::find_n() with char and wchar_t
schmouk403a87c #190 - Implement new signatures for method CppStringT::index()
schmouke9bbcdd #136 - Test CppStringT::index() with char and wchar_t
schmouk951d497 #191 - Implement new signatures for method CppStringT::index_n()
schmouka12477b #137 - Test CppStringT::index_n() with char and wchar_t
schmouk4ec3564 #138 - Test CppStringT::isalnum() with char and wchar_t
schmouk3fdad29 #139 - Test CppStringT::isalpha() with char and wchar_t
schmouk4dc817f #140 - Test CppStringT::isascii() with char and wchar_t
schmoukf4588b8 #141 - Test CppStringT::isdecimal() with char and wchar_t
schmoukb981f6a #142 - Test CppStringT::isdigit() with char and wchar_t
schmouk2c3c035 #145 - Test CppStringT::isnumeric() with char and wchar_t
schmouk177811d #143 - Test CppStringT::isidentifier() with char and wchar_t
schmouk365319f #144 - Test CppStringT::islower() with char and wchar_t
schmouk33f809f #146 - Test CppStringT::isprintable() with char and wchar_t
schmouk740ee0f #147 - Test CppStringT::ispunctuation() with char and wchar_t
schmouk7ca47c7 #148 - Test CppStringT::isspace() with char and wchar_t
schmoukb1c0e4c #149 - Test CppStringT::istitle() with char and wchar_t
schmouk474642e #150 - Test CppStringT::isupper() with char and wchar_t
schmouk43f92f7 #151 - Test CppStringT::is_words_sep() with char and wchar_t
schmoukaba3db6 #152 - Test `CppStringT::join()` with `char` and `wchar_t`
schmouk383adcd #153 - Test CppStringT::ljust() with char and wchar_t
schmouk78c5ebc #154 - Test CppStringT::lower() with char and wchar_t
schmoukc7a867b #155 - Test CppStringT::lstrip() with char and wchar_t
schmouk98a85fb #156 - Test CppStringT::partition() with char and wchar_t
schmouke85bfc9 #157 - Test CppStringT::removeprefix() with char and wchar_t
schmouk6faba8d #158 - Test CppStringT::removesuffix() with char and wchar_t
schmouk56b7326 #159 - Test CppStringT::replace() with char and wchar_t
schmouk2c30532 #160 - Test CppStringT::rfind() with char and wchar_t
schmouk6ff8a0f #196 - Extend and fix tests on find() and index() methods
schmoukcbcaae5 #161 - Test CppStringT::rfind_n() with char and wchar_t
schmoukdb2e408 #199-refactor tests
schmouk866069a #162-Test CppStringT::rindex() with char and wchar_t
schmoukbeafb01 #163-Test CppStringT::rindex_n() with char and wchar_t
schmouk8b5c5b9 #163-Test CppStringT::rindex_n() with char and wchar_t
schmouke3cf5e3 #164-Test CppStringT::rjust() with char and wchar_t
schmouk37d0dc8 #164-Test CppStringT::rjust() with char and wchar_t
schmouk96f452c #165-Test CppStringT::rpartition() with char and wchar_t
schmouk1062816 #165-Test CppStringT::rpartition() with char and wchar_t
schmouk80c3288 #166-Test CppStringT::rsplit() with char and wchar_t
schmouk19d9688 #166-Test CppStringT::rsplit() with char and wchar_t
schmoukf1f476b #167-Test CppStringT::rstrip() with char and wchar_t
schmoukc892008 #168-Test CppStringT::split() with char and wchar_t
schmouk90d8397 #169-Test CppStringT::splitlines() with char and wchar_t
schmouk446cb8e #200-modify .ignore and VS projects to compile and test 32-bits platf…
schmouka11502e #170-Test CppStringT::startswith() with char and wchar_t
schmouk9005fb0 #171-Test CppStringT::startswith_n() with char and wchar_t
schmouk6575060 #172-Test CppStringT::strip() with char and wchar_t
schmouk41860e7 #173-Test CppStringT::substr() with char and wchar_t
schmoukce29faf #174-Test CppStringT::swapcase() with char and wchar_t
schmouk52404a8 #175-Test CppStringT::title() with char and wchar_t
schmoukf95e30f #176-Test CppStringT::translate() with char and wchar_t
schmoukaa60e6a #177-Test CppStringT::upper() with char and wchar_t
schmouke3ff5ce #178-Test CppStringT::zfill() with char and wchar_t
schmouk7588cb6 #202-add test on nullptr in CppStringT pointer constructors
schmouk873d6d1 #182-Implement method CppStringT::contains()
schmouk60f5163 #184-Test method CppStringT::contains()
schmoukc269f62 #183-Implement method CppStringT::contains_n()
schmouk016bdfd #183-Implement method CppStringT::contains_n()
schmoukfbde103 #185-Test method CppStringT::contains_n()
schmouk20c35e8 #180-Implement CppStringT::operator* ()
schmouk1559542 #181-Test CppStringT::operator* ()
schmouk042fcca #203-remove signatures with c-strings and chars
schmouk83f468c #208-implement slices
schmouk43f4bbd #208-implement slices
schmouk3f25a77 #209-test slices
schmoukf512977 #194-Implement operator () with slices
schmouk5aa3489 #195-Test operator () with slices
schmouk96ccdf7 #210-remove string_views stuff.
schmoukb3dc949 #211-fix c++ and c standards for every projects, configurations and p…
schmouke986ede #18-Implement method CppStringT::format()
schmouk18f4f7d #18-Implement method CppStringT::format()
schmoukbccb85b #205-test method CppStringT::format()
schmouk2074216 #217-set VS project to c++20 and c17
schmouk6110a76 #207-Add namespace pcs when missing in tests
schmoukb9ae59c #206-fix missing \briefs in doxygen strings
schmouk2ee7546 #212-add attribute [[nodiscard]] at any useful place
schmouk2348d3c #219-modify copyright dates
schmouk19d3913 #213-add attribute [[likely]] and [[unlikely]]
schmouk7a79232 Merge pull request #221 from schmouk/tests
schmouk685553f #204-create PCS documentation
schmouk7a771e2 #204-create PCS documentation
schmouk96c75d6 #204-create PCS documentation
schmouk4fda9ec Update README.md
schmouk2e1ad62 #204
schmoukcac9c07 #224-generate doxygen documentation
schmouk061477d #204-create PCS documentation
schmouk7382f6b #223-cpp-strings VS project clean-up
schmouk7d902d3 #222-simplify .gitignore
schmouk7df48fc Merge pull request #225 from schmouk/documentation
schmoukFile filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
25 changes: 6 additions & 19 deletions.gitignore
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -7,26 +7,13 @@ | ||
| *.o | ||
| *.obj | ||
| # Executables | ||
| *.exe | ||
| *.out | ||
| *.app | ||
| # Visual Studio specifics | ||
| .vs | ||
| x64 | ||
| Debug | ||
| Release | ||
105 changes: 104 additions & 1 deletionREADME.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1,105 @@ | ||
| # Library cpp-strings | ||
| [](https://github.com/schmouk/cpprandlib/license) [](https://github.com/schmouk/cpprandlib/releases) []() []() | ||
| github repository: [https://github.com/schmouk/pythonic-cpp-strings](https://github.com/schmouk/pythonic-cpp-strings) | ||
| What if c++ strings where as easy to use as Python strings? | ||
| Let's just use c++ strings as are Python ones, with same API or as similar API as possible. | ||
| Library **cpp-strings** is fully templated. Just download header file `cppstrings.h` and put it anywhere in your project. Notice: all of its stuff is declared and defined in namespace `pcs` - which stands for **P**ythonic **C**++ **S**trings. | ||
| * The templated class `pcs::CppStringT<>` defines all constructors and methods that implement the equivalent of Python strings API. | ||
| * Class `pcs::CppString` specializes the templated class with `char` characters. | ||
| * Class `pcs::CppWString` specializes the templated class with `wchar_t` characters. | ||
| **cpp-strings** is implemented with the currently most recent c++ standard available with gcc, clang and msvc c++ compilers, i.e. standard **c++20**. | ||
| * directory `cpp-strings` contains the header file `cppstring.h`. | ||
| This is the header file to include in your projects. | ||
| * directory `cpp-strings-tests` contains the unit-tests file `cpp-strings-tests.cpp` | ||
| This file tests all the library stuff. It is a valuable code container with so many examples of use of the library, the classes, the methods and the functions it defines. | ||
| The code has been developed using VS2022 IDE. As such, unitary tests have been coded using Microsoft Visual Studio Cpp Unit Test Framework. The related VS project is provided with this library. | ||
| Notice: no clang, gcc or msvc specific declarations or goodies have been use to code library **cpp-strings**. It should then be compilable with any of these compilers. To be able to use it with your project, just ensure that the c++ standard used with you favorite compiler is **c++20**: | ||
| * options `-std=c++20` or `-std=c++latest` for clang and gcc (v. 10 and above), | ||
| or option `-std=c++2a` for clang and gcc (v. 9 and earlier); | ||
| * options `/std=c++20` or `/std=c++latest` for Visual Studio 2019 and later. | ||
| If you want to run the unitary tests, well, use the last version of Visual Studio (i.e. VS 2022, by July 2025). The Community free version will truly be fine. | ||
| The vcproject associated with the unit tests in **cpp-strings** is already configured to use the option flag `/std:c++latest` since the implemented code uses a very few but very useful c++23 goodies. | ||
| --- | ||
| ## License | ||
| Library cpp-strings | ||
| "What if c++ strings where as easy to use as Python strings?" | ||
| Copyright (C) 2023-2025 Philippe Schmouker | ||
| contact - ph (dot) schmouker (at) gmail (dot) com | ||
| This program is free software: you can redistribute it and/or modify | ||
| it under the terms of the GNU General Public License as published by | ||
| the Free Software Foundation, either version 3 of the License, or | ||
| (at your option) any later version. | ||
| This program is distributed in the hope that it will be useful, | ||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| GNU General Public License for more details. | ||
| You should have received a copy of the GNU General Public License | ||
| along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
| --- | ||
| ## Intro | ||
| The creation of this library has been started with the aim at easing the use of strings in c++. Other projects exist, even aiming also to implement a Python-like strings API, but the only ones we have found were either started but not completed, or were not implementing the whole Python API. | ||
| So, we started to work on **Pythonic c++ strings**. Library **cpp-strings** is now ready. It fully implements the Python API (even with a c++ implementation of *slices*) and it is fully tested with *unitary tests*. | ||
| The implementation of library **cpp-strings** is fully templated and is contained into a single header file: `cpp-strings/cppstrings.h`. To take a whole benefit of it, just add this header file to your project and include it in your own files. It very fastly compiles. That's all! | ||
| Header file `cpp-strings/cppstrings.h` defines: | ||
| * templated class `template<typename CharT> class pcs::CppStringT` which implements all the stuff about pythonic c++ strings. It inherits from c++ STL class `std::basic_string<CharT>`, so it gets access to all c++ STL methods, functions and goodies about strings; | ||
| * this class is specialized by: `using pcs::CppString> = pcs::CppStringT<char>` for pythonic c++ strings based on `char` characters; | ||
| * it is also specialized by: `using pcs::CppWString> = pcs::CppStringT<wchar_t>` for pythonic c++ strings based on `wchar_t` characters. | ||
| The unitary tests are provided in directory `cpp-strings-tests/`. File `cpp-strings-tests/cpp-strings-tests.cpp` contains the related code. Tests have been coded using VS2022 IDE and as such, are using the Microsoft Visual Studio Cpp Unit Test Framework. The related VS project can be found in the same directory. It is already configured to create code for Release as well as for Debug configurations, and for 32-bits or 64-bits platforms at your choice. | ||
| This `.cpp` file is a great place to see **cpp-strings** code in action. Each structure, class, method, litteral operator and function being unitary tested in here, you should find there many examples of its use for all **cpp-strings** stuff. | ||
| --- | ||
| ## Latest Release - Release 1.0 (1.0.0.224) 2025/07 | ||
| The coding of this project started by March 2023 and had been put in standby mode for some months - no time to work on it. The very first release is now availble (since July 2025), as **Release 1.0**. | ||
| This release has been fully tested. Code coverage is 100%. | ||
| Release 1.0 implements all Python strings API but one feature (see below). | ||
| Python *slices* are implemented via c++ `operator()` as declared and defined in the templated class `pcs::CppStringT<>`. Python slices have next specific notation: `[start : stop : step]` and allow the running step by step through range [start, stop) (notice: stop is excluded from the range). Operator `(start, stop, step)` acts the same way while running through the content of pythonic c++ strings. A dedicated base class `Slice` is also provided and can be passed as argument to `operator()`. It is derived in many simpler slices classes, since Python slices may not define either `start`, `stop` or `step` which then get default values (resp. 0, *end-of-sequence*, and 1). | ||
| ### Missing parts in Release 1.0 | ||
| Python strings are based on Unicode chars. This is currently not the case for pythonic c++ strings in **cpp-strings**. | ||
| Unicode encoding allows for a specific comparison mode on strings, the **casefold** mode. There, Unicode chars are transformed into their lower equivalent char in a standardized manner which is more "agressive" than the simpler lowering method `lower()`. Comparing strings without taking into account the case of their chars is then performed in a far more accurate manner. | ||
| This feature is currently NOT implemented in library **cpp-strings**. | ||
| So up to now, if you want to compare pythonic c++ strings from **cpp-strings** on whatever the case is for each of their chars, compare them applying method `.lower()` to both strings. This will do the job for chars and for wchar_t also for a majority of languages (but might fail for very few signs of specific languages in this last case). | ||
| Notice: dealing with Unicode chars and implementing method `casefold()` as it is the case in Python is planned for a next release of library **cpp-strings**. | ||
| N.B. "*planned for a next release*" does not imply that a fixed date is planned either. | ||
| --- | ||
| ## Documentation | ||
| The **cpp-strings** HTML documentation is available here: [html/index.html](html/index.html). | ||
| It has then been produced with the great utility **doxygen** developed by Vicente Hernando (the doxygen Github repository can be accessed [here](https://github.com/doxygen/doxygen), and the utility can be downloaded from there: [https://www.doxygen.nl/download.html](https://www.doxygen.nl/download.html)). | ||
| This is a short documentation of the library. For some of its part it is a copy of the Python original documentation on strings. For its other part it documents the c++ implementation of **cpp-strings**. | ||
| And remember: to better understand how to use this pythonic c++ strings library, have a look also at [`cpp-strings-tests/cpp-strings-tests.cpp`](cpp-strings-tests/cpp-strings-tests.cpp) to see **cpp-strings** library code in action! |
Oops, something went wrong.
Uh oh!
There was an error while loading.Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.