From b0832681e8d55460653bfa3a5a71bd796fa8ab3b Mon Sep 17 00:00:00 2001 From: vxunderground <57078196+vxunderground@users.noreply.github.com> Date: Thu, 14 Jul 2022 22:28:38 -0500 Subject: [PATCH] Create StringToken.cpp --- String Manipulation/StringToken.cpp | 91 +++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 String Manipulation/StringToken.cpp diff --git a/String Manipulation/StringToken.cpp b/String Manipulation/StringToken.cpp new file mode 100644 index 0000000..7163184 --- /dev/null +++ b/String Manipulation/StringToken.cpp @@ -0,0 +1,91 @@ +PCHAR StringTokenA(PCHAR String, CONST PCHAR Delim) +{ + PCHAR Last; + PCHAR SpanP, Token; + INT C, SC; + + if (String == NULL) + return NULL; + +CONTINUE: + + C = *String++; + + for (SpanP = (PCHAR)Delim; (SC = *SpanP++) != ERROR_SUCCESS;) + { + if (C == SC) + goto CONTINUE; + } + + if (C == ERROR_SUCCESS) { Last = NULL; return NULL; } + + Token = String - 1; + + for (;;) + { + C = *String++; + SpanP = (PCHAR)Delim; + + do { + if ((SC = *SpanP++) == C) + { + if (C == ERROR_SUCCESS) + String = NULL; + else + String[-1] = '\0'; + + Last = String; + return Token; + } + } while (SC != ERROR_SUCCESS); + } + + return NULL; + +} + +PWCHAR StringTokenW(PWCHAR String, CONST PWCHAR Delim) +{ + PWCHAR Last; + PWCHAR SpanP, Token; + INT C, SC; + + if (String == NULL) + return NULL; + +CONTINUE: + + C = *String++; + + for (SpanP = (PWCHAR)Delim; (SC = *SpanP++) != ERROR_SUCCESS;) + { + if (C == SC) + goto CONTINUE; + } + + if (C == ERROR_SUCCESS) { Last = NULL; return NULL; } + + Token = String - 1; + + for (;;) + { + C = *String++; + SpanP = (PWCHAR)Delim; + + do { + if ((SC = *SpanP++) == C) + { + if (C == ERROR_SUCCESS) + String = NULL; + else + String[-1] = '\0'; + + Last = String; + return Token; + } + } while (SC != ERROR_SUCCESS); + } + + return NULL; + +}