Added padding functionality

This commit is contained in:
Leonetienne 2022-03-14 12:17:15 +01:00
parent 88f0fdc840
commit cca5439be1
7 changed files with 117 additions and 1 deletions

BIN
Src/.StringTools.cpp.swp Normal file

Binary file not shown.

View File

@ -95,7 +95,6 @@ std::string StringTools::Upper(const std::string& str) {
std::vector<std::string> StringTools::Split(const std::string& str, const std::string& seperator) {
std::vector<std::string> toRet;
// Quick-accept: str length is 0
if (str.length() == 0)
toRet.push_back("");
@ -132,3 +131,25 @@ std::vector<std::string> 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();
}

View File

@ -29,6 +29,12 @@ public:
//! Will split a string by a string seperator
static std::vector<std::string> 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();

Binary file not shown.

View File

@ -16,6 +16,7 @@ add_executable(Test
String__Replace_Char.cpp
String__Replace_String.cpp
String__Split.cpp
String__PadLeft.cpp
# CharTools-Tests
Char__IsVowel.cpp

44
Test/String__PadLeft.cpp Normal file
View File

@ -0,0 +1,44 @@
#include <StringTools.h>
#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;
}

44
Test/String__PadRight.cpp Normal file
View File

@ -0,0 +1,44 @@
#include <StringTools.h>
#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;
}