WoW Model Viewer
Your premiere tool for viewing, equipping and animating World of Warcraft models.
Loading...
Searching...
No Matches
string_utils.h
Go to the documentation of this file.
1#pragma once
2
3#include <algorithm>
4#include <sstream>
5#include <string>
6#include <vector>
7
9namespace core
10{
12 inline std::vector<std::string> split(const std::string& s, char delimiter)
13 {
14 std::vector<std::string> tokens;
15 std::string token;
16 std::istringstream stream(s);
17 while (std::getline(stream, token, delimiter))
18 tokens.push_back(token);
19 return tokens;
20 }
21
22 inline std::vector<std::string> split(const std::string& s, const std::string& delimiter)
23 {
24 std::vector<std::string> tokens;
25 size_t start = 0;
26 size_t end;
27 while ((end = s.find(delimiter, start)) != std::string::npos)
28 {
29 tokens.push_back(s.substr(start, end - start));
30 start = end + delimiter.size();
31 }
32 tokens.push_back(s.substr(start));
33 return tokens;
34 }
35
36 inline std::string toLower(const std::string& s)
37 {
38 std::string result = s;
39 std::transform(result.begin(), result.end(), result.begin(),
40 [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
41 return result;
42 }
43
44 inline bool containsIgnoreCase(const std::string& s, const std::string& substr)
45 {
46 const auto it = std::search(s.begin(), s.end(), substr.begin(), substr.end(),
47 [](unsigned char a, unsigned char b) { return std::tolower(a) == std::tolower(b); });
48 return it != s.end();
49 }
50
51 inline bool startsWithIgnoreCase(const std::string& s, const std::string& prefix)
52 {
53 if (prefix.size() > s.size()) return false;
54 return std::equal(prefix.begin(), prefix.end(), s.begin(),
55 [](unsigned char a, unsigned char b) { return std::tolower(a) == std::tolower(b); });
56 }
57
58 inline bool endsWithIgnoreCase(const std::string& s, const std::string& suffix)
59 {
60 if (suffix.size() > s.size()) return false;
61 return std::equal(suffix.rbegin(), suffix.rend(), s.rbegin(),
62 [](unsigned char a, unsigned char b) { return std::tolower(a) == std::tolower(b); });
63 }
64
65 inline int safeStoi(const std::string& s, int fallback = 0)
66 {
67 if (s.empty()) return fallback;
68 try { return std::stoi(s); }
69 catch (...) { return fallback; }
70 }
71}
Common string utility functions (split, case-insensitive search, etc.).
Definition GameLoader.h:11
std::vector< std::string > split(const std::string &s, char delimiter)
Split a string by a single-character delimiter.
bool containsIgnoreCase(const std::string &s, const std::string &substr)
bool startsWithIgnoreCase(const std::string &s, const std::string &prefix)
bool endsWithIgnoreCase(const std::string &s, const std::string &suffix)
std::string toLower(const std::string &s)
int safeStoi(const std::string &s, int fallback=0)