diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9dc4a94
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,3 @@
+*.html -linguist-detectable
+*.css -linguist-detectable
+*.js -linguist-detectable
diff --git a/README.md b/README.md
index e584494..6a1925a 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,8 @@
-# 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)
+ [](https://github.com/schmouk/pythonic-cpp-strings/license) [](https://github.com/schmouk/pythonic-cpp-strings/releases) []() []()
-What if c++ strings where as easy to use as Python strings?
+### What if c++ strings were 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.
@@ -12,7 +11,9 @@ Library **cpp-strings** is fully templated. Just download header file `cppstring
* 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**.
+The cpp-strings **HTML documentation** is available in subdirectory `cpp-strings/html`. Click on file `index.html` there from your local file manager to browse its content.
+
+Library **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.
@@ -29,6 +30,9 @@ or option `-std=c++2a` for clang and gcc (v. 9 and earlier);
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.
+github repository: [https://github.com/schmouk/pythonic-cpp-strings](https://github.com/schmouk/pythonic-cpp-strings)
+pythonic-cpp-strings github web pages: [https://schmouk.github.io/pythonic-cpp-strings/](https://schmouk.github.io/pythonic-cpp-strings/)
+
---
## License
@@ -71,9 +75,9 @@ This `.cpp` file is a great place to see **cpp-strings** code in action. Each st
---
-## Latest Release - Release 1.0 (1.0.0.224) 2025/07
+## Latest Release - Release 1.0 (1.0.2.232) 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**.
+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.2**.
This release has been fully tested. Code coverage is 100%.
@@ -96,7 +100,7 @@ N.B. "*planned for a next release*" does not imply that a fixed date is planned
---
## Documentation
-The **cpp-strings** HTML documentation is available here: [html/index.html](html/index.html).
+The **cpp-strings** HTML documentation is available in subdirectory `cpp-strings/html`. Click on file `index.html` there from your local file manager to browse its content.
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)).
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..431aabd
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,3 @@
+theme: jekyll-theme-slate
+show_downloads: true
+
diff --git a/banner-image.jpg b/banner-image.jpg
new file mode 100644
index 0000000..1b341f4
Binary files /dev/null and b/banner-image.jpg differ
diff --git a/cpp-strings/html/doxygen.css b/cpp-strings/html/doxygen.css
index df33d6b..96ed5da 100644
--- a/cpp-strings/html/doxygen.css
+++ b/cpp-strings/html/doxygen.css
@@ -2442,7 +2442,7 @@ details[open]>summary::before {
html {
---timestamp: 'Wed Jul 16 2025'
+--timestamp: 'Thu Jul 17 2025'
}
span.timestamp { content: ' '; }
span.timestamp:before { content: var(--timestamp); }
diff --git a/cpp-strings/html/doxygen_crawl.html b/cpp-strings/html/doxygen_crawl.html
index 63ae5ec..a13fd7d 100644
--- a/cpp-strings/html/doxygen_crawl.html
+++ b/cpp-strings/html/doxygen_crawl.html
@@ -150,9 +150,12 @@
-
+
-
+
+
+
+
diff --git a/cpp-strings/html/index.html b/cpp-strings/html/index.html
index ecd46c6..528fc62 100644
--- a/cpp-strings/html/index.html
+++ b/cpp-strings/html/index.html
@@ -5,7 +5,7 @@
-
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.
cpp-strings is implemented with the currently most recent c++ standard available with gcc, clang and msvc c++ compilers, i.e. standard c++20.
+The cpp-strings HTML documentation is available in subdirectory cpp-strings/html. Click on file index.html there from your local file manager to browse its content.
+Library cpp-strings is implemented with the currently most recent c++ standard available with gcc, clang and msvc c++ compilers, i.e. standard c++20.
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.
@@ -115,8 +117,10 @@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.
github repository: https://github.com/schmouk/pythonic-cpp-strings
+ pythonic-cpp-strings github web pages: https://schmouk.github.io/pythonic-cpp-strings/
Library cpp-strings "What if c++ strings where as easy to use as Python strings?" @@ -137,23 +141,40 @@You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
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:
The unitary tests are provided in directory cpp-strings-tests/. File cpp-strings-tests.cpp contains the related code. They has 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, you should find there many examples of their use for all cpp-strings stuff.
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.
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).
+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.
The coding of this project started by March 2023 and had been put in standby mode for some months. The very first release is now availble (since July 2025), as Release 1.0.
-This release has been fully tested. It 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 through range [start, stop) (notice: stop is excluded from the range) step by step. Operator (start, stop, step) acts the same way while running through the content of c++ strings.
+The cpp-strings HTML documentation is available in subdirectory cpp-strings/html. Click on file index.html there from your local file manager to browse its content.
+It has then been produced with the great utility doxygen developed by Vicente Hernando (the doxygen Github repository can be accessed here, and the utility can be downloaded from there: 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 to see cpp-strings library code in action!