22 static inline int stricmp(
char const *s1,
char const *s2)
27 return ::strcasecmp(s1, s2);
31 static inline int strnicmp(
char const *s1,
char const *s2,
size_t n)
36 return ::strncasecmp(s1, s2, n);
40 static inline int stricmp(std::string_view
const &s1, std::string_view
const &s2)
42 size_t n1 = s1.size();
43 size_t n2 = s2.size();
44 size_t n = std::min(n1, n2);
46 int i =
strnicmp(s1.data(), s2.data(), n);
49 if (n1 < n2)
return -1;
50 if (n1 > n2)
return 1;
54 static inline char const *
stristr(
const char *haystack,
const char *needle)
56 size_t needle_len = strlen(needle);
57 for (
const char *p = haystack; *p; p++) {
58 if (
strnicmp(p, needle, needle_len) == 0) {
69 std::vector<std::string_view>
splitLinesV(std::string_view
const &str);
70 std::vector<std::string_view>
splitLinesV(std::vector<char>
const &ba);
72 std::vector<std::string>
splitLines(std::string_view
const &str);
74 std::vector<QString>
splitLines(QString
const &text);
77 std::vector<std::string_view>
splitWords(std::string_view
const &text);
78 std::vector<std::string_view>
split(std::string_view
const &sv,
char sep);
79 std::string
filename(std::string
const &path);
80 bool starts_with(
const std::string_view &str,
const std::string_view &with);
81 bool starts_with(
const std::string_view &str,
char with);
82 bool ends_with(
const std::string_view &str,
const std::string_view &with);
83 bool ends_with(
const std::string_view &str,
char with);
84 std::string
mid(std::string
const &str,
int start,
int length = -1);
91 void dump(
const uint8_t *ptr,
size_t len);
93 void dump(QByteArray
const *in);
95 bool isText(std::string
const &mimetype);
96 bool isImage(std::string
const &mimetype);
97 bool isSVG(std::string
const &mimetype);
98 bool isPSD(std::string
const &mimetype);
99 bool isPDF(std::string
const &mimetype);
112 std::string_view
trimmed(std::string_view
const &s);
113 std::string_view
trimQuotes(std::string_view s);
117 std::vector<uint8_t>
hex_string_to_bin(std::string_view
const &s,
const char *sep =
nullptr);
119 int compare(uint8_t
const *a,
size_t n, uint8_t
const *b,
size_t m);
120 int compare(std::vector<uint8_t>
const &a, std::vector<uint8_t>
const &b);
122 std::string
toLower(std::string_view
const &s);
123 std::string
toUpper(std::string_view
const &s);
125 static inline std::vector<std::string>
vector_string(std::vector<std::string_view>
const &v)
127 std::vector<std::string> out;
128 for (
auto const &s : v) {
134 template <
typename T>
135 static inline T
toi(std::string_view
const &s,
size_t *consumed =
nullptr)
141 while (i < s.size() && isspace((
unsigned char)s[i])) {
147 }
else if (s[i] ==
'-') {
152 while (i < s.size()) {
153 if (s[i] <
'0' || s[i] >
'9')
break;
154 n = n * 10 + (s[i] -
'0');
163 #pragma warning(push)
164 #pragma warning(disable: 4146)
167 return sign ? -n : n;
174 static inline void append(std::vector<char> *out,
char const *ptr,
size_t len)
176 if (out && ptr && len > 0) {
177 out->insert(out->end(), ptr, ptr + len);
181 static inline void append(std::vector<char> *out,
char c)
188 static inline void append(std::vector<char> *out, std::string_view
const &v)
190 append(out, v.data(), v.size());
193 std::string
strip_vt(std::string_view
const &s);
195 std::string
getProgram(std::string
const &cmdline);
std::string_view trimQuotes(std::string_view s)
文字列の両端から空白文字と引用符を取り除く
Definition: misc.cpp:546
bool isSVG(std::string const &mimetype)
MIMEタイプがSVG画像を表すか判定する
Definition: misc.cpp:382
static int strnicmp(char const *s1, char const *s2, size_t n)
Definition: misc.h:31
std::string replace_backslash_to_slash(std::string_view const &in)
バックスラッシュをスラッシュに置換する
Definition: misc.cpp:229
std::vector< uint8_t > hex_string_to_bin(std::string_view const &s, const char *sep=nullptr)
16進数文字列をバイナリデータに変換する
Definition: misc.cpp:634
std::vector< std::string_view > splitWords(std::string_view const &text)
文字列を単語に分割する
Definition: misc.cpp:96
std::vector< std::string_view > split(std::string_view const &sv, char sep)
Definition: misc.cpp:126
std::string toLower(std::string_view const &s)
Definition: misc.cpp:707
static int stricmp(std::string_view const &s1, std::string_view const &s2)
Definition: misc.h:40
void dump(const uint8_t *ptr, size_t len)
メモリダンプを16進数で表示する
Definition: misc.cpp:309
bool starts_with(const std::string_view &str, const std::string_view &with)
文字列が指定の文字列で始まるか判定する
Definition: misc.cpp:164
static void append(std::vector< char > *out, char const *ptr, size_t len)
Definition: misc.h:174
bool isImage(std::string const &mimetype)
MIMEタイプが画像ファイルを表すか判定する
Definition: misc.cpp:426
bool ends_with(const std::string_view &str, const std::string_view &with)
文字列が指定の文字列で終わるか判定する
Definition: misc.cpp:184
static std::vector< std::string > vector_string(std::vector< std::string_view > const &v)
Definition: misc.h:125
bool isValidMailAddress(std::string const &email)
Definition: misc.cpp:508
std::vector< std::string_view > splitLinesV(std::string_view const &str)
Definition: misc.cpp:60
bool isPSD(std::string const &mimetype)
MIMEタイプがPhotoshopファイルを表すか判定する
Definition: misc.cpp:397
bool isPDF(std::string const &mimetype)
MIMEタイプがPDFファイルを表すか判定する
Definition: misc.cpp:411
std::string strip_vt(std::string_view const &s)
VTシーケンスを取り除く
Definition: misc.cpp:737
std::string_view trimNewLines(std::string_view s)
文字列の両端から改行文字を取り除く
Definition: misc.cpp:569
std::string_view trimmed(std::string_view const &s)
文字列の両端から空白文字を取り除く
Definition: misc.cpp:528
std::string mid(std::string const &str, int start, int length=-1)
文字列の一部分を取得する
Definition: misc.cpp:205
static char const * stristr(const char *haystack, const char *needle)
Definition: misc.h:54
std::string normalizePathSeparator(std::string const &str)
パスの区切り文字を正規化する
Definition: misc.cpp:293
bool isExecutable(const std::string &cmd)
ファイルが実行可能か判定する
Definition: misc.cpp:475
std::vector< std::string_view > splitLinesKeepNewLineV(std::string_view const &str)
Definition: misc.cpp:70
std::string bin_to_hex_string(const void *begin, const void *end)
バイナリデータを16進数文字列に変換する
Definition: misc.cpp:607
static int stricmp(char const *s1, char const *s2)
Definition: misc.h:22
std::string makeProxyServerURL(std::string text)
プロキシサーバーURLを正規化する
Definition: misc.cpp:456
std::vector< std::string > splitLines(std::string_view const &str)
Definition: misc.cpp:75
std::string toUpper(std::string_view const &s)
Definition: misc.cpp:717
std::string filename(std::string const &path)
Definition: misc.cpp:149
bool isText(std::string const &mimetype)
バイナリデータの内容をヘキサでダンプする
Definition: misc.cpp:369
std::string getProgram(std::string const &cmdline)
Definition: misc.cpp:777
int compare(uint8_t const *a, size_t n, uint8_t const *b, size_t m)
2つのバイナリデータを比較する
Definition: misc.cpp:671
static T toi(std::string_view const &s, size_t *consumed=nullptr)
Definition: misc.h:135