From cca5439be1d772e67b7f5d48db572df90b02d41e Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Mon, 14 Mar 2022 12:17:15 +0100 Subject: [PATCH] Added padding functionality --- Src/.StringTools.cpp.swp | Bin 0 -> 16384 bytes Src/StringTools.cpp | 23 ++++++++++++++++- Src/StringTools.h | 6 +++++ Test/.String__PadRight.cpp.swp | Bin 0 -> 12288 bytes Test/CMakeLists.txt | 1 + Test/String__PadLeft.cpp | 44 +++++++++++++++++++++++++++++++++ Test/String__PadRight.cpp | 44 +++++++++++++++++++++++++++++++++ 7 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 Src/.StringTools.cpp.swp create mode 100644 Test/.String__PadRight.cpp.swp create mode 100644 Test/String__PadLeft.cpp create mode 100644 Test/String__PadRight.cpp diff --git a/Src/.StringTools.cpp.swp b/Src/.StringTools.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..47abbdc057b4cedc133d5e82ee143d0728d4e572 GIT binary patch literal 16384 zcmeI2duSX*9LJ|=t*wtfR0JQ@X#(k;xmQz#cufkety--`bM~PkWwSSzTXNZ5cK6cI zC)ipLr7HgAtF``NL6rEHMM13pDERtED~kG;TK~2nmV(yr%w}&(n!CG{-QoqKVQ%fZ_|83=!Mq|=?QD8<2)T2taZvk1+yS%{5cXckMS6{VhMz@+mMggOMQNSo*6fg=H z1&jhl0i(eGLxITeAba6TN9@is@p;yy^Xxc%d3=6$()BoLPDTNvfKk9GU=%P47zK<1 zMggOMQNSo*6fg>0gbG+?LN=mZuk#lG`2Me+|9@Uc$d}*?FbYaw5Znx|1HUgI6tzTR{)F1)RNtkYB-@-~iYKJiq`2 z*Mdc0Avl8<5~sm$;CZkYxL_2l1#7@+@a<)Ud;s186W{>Y5B7n3Kmp{zAM;@kd;`7) z6W|Fj3@V@xbb=ef4PY*q17?Gd=fOUh0DHhVcnE9-c`zTGyc9ZsW8esQ5xf8%2m8Qd z;3jZpE+HqtyWlW51VV5x$bi$A5ONCq0#1TYz^h;{*a9|#>%plxgnSB)ftSJ4;2?0o zHn13UfbZ~v=OgeAm;gt?5%3B)2%Z8@f;3nR7J=^(GoORcz;WCkjfh-YYW%xOv3S2#-oPqR%J$qaf^A-xxZcex z%21haSFM1eQ7Wys3ALx`PC~eciI0&t$fDRKd4W=O)_+l&h7SD3%r}yRx*^HLCJ5+RZcZ z*QwAHH@cJuMAB)+qU(Dh?+(=v2qFCS>H(FS;a` zywM$ENNGWB(;^S_v@k3x;mRhSCcR4s253PE3sE1aJN8J{vTf!^u%M!Wk4213>V&kQ zbe!DC&dyjmQIj^BWgVg=tu;hJlWpF=LaZ@nBewgsAXp^_Og!kPx?a*}fRbNxrW^m7 zb<7LO+16p-G_~pDTqrB&I$H$=cY#uPx(;KvNJkj+#o*(Ujb%qHpjHSWm5j2uw2|Uv z(kYvE(>*JCwMgWWB74;UU1lvy)9!AHR6kNXmZfDM$8|RMU%-azHB50e7NK6P%BDyW zL*WtUQR%==!c9#%MHl3}jJV42iCfIm@$?+`nw((pciIVhlaJ}E&GdW`bigj!PXE%U00W;-i^dzuWe&>v+?>a<5li*6LVN{ z)u3tYakMc)l$>g3&9~7!j|m%=`*1^>_OnHM_CIz0^ z6lPkfC`c9|o*Qo?kjM4sZp)QUcF}YTl=dibzDv~1#A_MTZA9yGT)S2;Guj`@u3klw ztj-68`*u0?+45@J!F2|M93Sjdyv;& a&S<&K?^^K5anKpAPWR10yf2vMo8zBUDcFDj literal 0 HcmV?d00001 diff --git a/Src/StringTools.cpp b/Src/StringTools.cpp index 346e1bd..fe16c93 100644 --- a/Src/StringTools.cpp +++ b/Src/StringTools.cpp @@ -95,7 +95,6 @@ std::string StringTools::Upper(const std::string& str) { std::vector StringTools::Split(const std::string& str, const std::string& seperator) { std::vector toRet; - // Quick-accept: str length is 0 if (str.length() == 0) toRet.push_back(""); @@ -132,3 +131,25 @@ std::vector StringTools::Split(const std::string& str, const std::s return toRet; } + +std::string StringTools::PadLeft(const std::string& str, const char pad, const std::size_t len) { + std::stringstream ss; + + for (std::size_t i = str.length(); i < len; i++) + ss << pad; + + ss << str; + + return ss.str(); +} + +std::string StringTools::PadRight(const std::string& str, const char pad, const std::size_t len) { + std::stringstream ss; + + ss << str; + + for (std::size_t i = str.length(); i < len; i++) + ss << pad; + + return ss.str(); +} diff --git a/Src/StringTools.h b/Src/StringTools.h index d65772a..e8de59d 100644 --- a/Src/StringTools.h +++ b/Src/StringTools.h @@ -29,6 +29,12 @@ public: //! Will split a string by a string seperator static std::vector Split(const std::string& str, const std::string& seperator); + //! Will pad a string to the left to length l + static std::string PadLeft(const std::string& str, const char pad, const std::size_t len); + + //! Will pad a string to the right to length l + static std::string PadRight(const std::string& str, const char pad, const std::size_t len); + private: // No instanciation! >:( StringTools(); diff --git a/Test/.String__PadRight.cpp.swp b/Test/.String__PadRight.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..de26daecc999ecaca54d464b0b050fe580dbc163 GIT binary patch literal 12288 zcmeI&T}u>E9LMpaSAk`b1Q7)PMnQ$$nN^Ey%OGq*!Kijuy$~74oue}}&e>+p^gxuC zb=O6ZBwbf;q&HB}D~PR02c4e<|hI)=q?{gEMW&svp0Ty5Z7GMDuU;!5Rp9FNRL#*O~I-3ubYaTmx z9Gk!LfdyEA1z3OuSbzmsfCX591z3OuSl}NNa6KWObqO(d7>mdM|6AYxH;xMN0li0S zXckSQ3Dk#rQ4jjqjqA`m^cKBB>*ys~Kn5ao0)0Co#8>ngy+NGe$pi}51 z>Ovb>+ZXf+t)Um_DGJa$%GSPsc(4EqumB6N01L1H3$OqS{563`f-qvK(>S_V|G8w} znw~7#11i-tHb#ao!%!6p#$e;LWzmd`gQW-f%79T-QKBi)Ua^?e_Xkt`K5E-6Tr9RW z2oD5Nj`|DzIXb^Jn|)u#)gZy{<=y8CB5JL|*jz#x3$BTWqGFdT&iIwGJ>WRkCZ}x2 zF)X~BhmFccj*Pj+GLreZ))MB8L4ile_Ae)-eOFWCYN|Dl*;eO7h|Fb6Wml7i$Tp7y zYMiTUV5WA9ALrUBfgAR5s3`kR>V{J?TGsxrg0v*GBA3GYtt7K)GOC0kwQ1F0YKJ2F z2^G;ctOI{|M*i%Fr=rTfinWY?pDk%jv +#include "Catch2.h" + +// Tests that padding to a length shorter adds no padding +TEST_CASE(__FILE__"/PadToShorterLength", "[Strings][PadLeft]") +{ + // Setup + const std::string in = "hello"; + + // Exercise + const std::string out = StringTools::PadLeft(in, '0', 3); + + // Verify + REQUIRE(out == "hello"); + return; +} + +// Tests that padding to a length equal adds no padding +TEST_CASE(__FILE__"/PadToEqualLength", "[Strings][PadLeft]") +{ + // Setup + const std::string in = "hello"; + + // Exercise + const std::string out = StringTools::PadLeft(in, '0', 5); + + // Verify + REQUIRE(out == "hello"); + return; +} + +// Tests that adding padding works +TEST_CASE(__FILE__"/Padding", "[Strings][PadLeft]") +{ + // Setup + const std::string in = "hello"; + + // Exercise + const std::string out = StringTools::PadLeft(in, '0', 7); + + // Verify + REQUIRE(out == "00hello"); + return; +} diff --git a/Test/String__PadRight.cpp b/Test/String__PadRight.cpp new file mode 100644 index 0000000..6846454 --- /dev/null +++ b/Test/String__PadRight.cpp @@ -0,0 +1,44 @@ +#include +#include "Catch2.h" + +// Tests that padding to a length shorter adds no padding +TEST_CASE(__FILE__"/PadToShorterLength", "[Strings][PadRight]") +{ + // Setup + const std::string in = "hello"; + + // Exercise + const std::string out = StringTools::PadRight(in, '0', 3); + + // Verify + REQUIRE(out == "hello"); + return; +} + +// Tests that padding to a length equal adds no padding +TEST_CASE(__FILE__"/PadToEqualLength", "[Strings][PadRight]") +{ + // Setup + const std::string in = "hello"; + + // Exercise + const std::string out = StringTools::PadRight(in, '0', 5); + + // Verify + REQUIRE(out == "hello"); + return; +} + +// Tests that adding padding works +TEST_CASE(__FILE__"/Padding", "[Strings][PadRight]") +{ + // Setup + const std::string in = "hello"; + + // Exercise + const std::string out = StringTools::PadRight(in, '0', 7); + + // Verify + REQUIRE(out == "hello00"); + return; +}