🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
StringUtil.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstUtil/StringView.hpp"
25#include "AstUtil/StringPosix.hpp"
26#include "AstUtil/StringSplit.hpp"
27#include <string> // for std::string
28#include <cctype> // for isspace(), tolower(), toupper()
29
30AST_NAMESPACE_BEGIN
31
42bool aEqualsIgnoreCase(StringView piece1, StringView piece2) noexcept;
43
44
48StringView aStripAsciiWhitespace(StringView str) noexcept;
49
50
54StringView aStripTrailingAsciiWhitespace(StringView str) noexcept;
55
56
60StringView aStripLeadingAsciiWhitespace(StringView str) noexcept;
61
62
66std::string aAsciiStrToLower(StringView str);
67
68
72std::string aAsciiStrToUpper(StringView str);
73
74
75inline
76bool aEqualsIgnoreCase(StringView piece1, StringView piece2) noexcept
77{
78 return piece1.size() == piece2.size() && (posix::strncasecmp(piece1.data(), piece2.data(), piece1.size()) == 0);
79}
80
81inline
83{
84 const char* begin = str.data();
85 const char* end = begin + str.size();
86
87 // Skip leading whitespace
88 while (begin < end && std::isspace(static_cast<unsigned char>(*begin))) {
89 ++begin;
90 }
91
92 // Skip trailing whitespace
93 while (end > begin && std::isspace(static_cast<unsigned char>(*(end - 1)))) {
94 --end;
95 }
96
97 return StringView(begin, static_cast<size_t>(end - begin));
98}
99
100inline
102{
103 const char* begin = str.data();
104 const char* end = begin + str.size();
105
106 // Skip trailing whitespace
107 while (end > begin && std::isspace(static_cast<unsigned char>(*(end - 1)))) {
108 --end;
109 }
110
111 return StringView(begin, static_cast<size_t>(end - begin));
112}
113
114inline
116{
117 const char* begin = str.data();
118 const char* end = begin + str.size();
119
120 // Skip leading whitespace
121 while (begin < end && std::isspace(static_cast<unsigned char>(*begin))) {
122 ++begin;
123 }
124
125 return StringView(begin, static_cast<size_t>(end - begin));
126}
127
128inline std::string aAsciiStrToLower(StringView sv)
129{
130 std::string str(sv);
131 for (char& c : str) {
132 c = std::tolower(static_cast<unsigned char>(c));
133 }
134 return str;
135}
136
137inline std::string aAsciiStrToUpper(StringView sv)
138{
139 std::string str(sv);
140 for (char& c : str) {
141 c = std::toupper(static_cast<unsigned char>(c));
142 }
143 return str;
144}
145
149AST_NAMESPACE_END
std::string aAsciiStrToUpper(StringView str)
将字符串转换为大写
定义 StringUtil.hpp:137
StringView aStripTrailingAsciiWhitespace(StringView str) noexcept
移除字符串尾部的ASCII空白字符
定义 StringUtil.hpp:101
std::string aAsciiStrToLower(StringView str)
将字符串转换为小写
定义 StringUtil.hpp:128
StringView aStripLeadingAsciiWhitespace(StringView str) noexcept
移除字符串首部的ASCII空白字符
定义 StringUtil.hpp:115
bool aEqualsIgnoreCase(StringView piece1, StringView piece2) noexcept
比较两个字符串是否相等(不区分大小写)
定义 StringUtil.hpp:76
StringView aStripAsciiWhitespace(StringView str) noexcept
移除字符串首尾的ASCII空白字符
定义 StringUtil.hpp:82