--- nono/lib/mystring.h 2026/04/29 17:04:54 1.1.1.4 +++ nono/lib/mystring.h 2026/04/29 17:04:57 1.1.1.5 @@ -20,6 +20,9 @@ extern void string_rtrim(std::string& st // 末尾の連続する空白文字列を取り除く (char *版) extern void rtrim(char *str); +// 文字列 str から先頭と末尾の連続する空白文字を取り除いた新しい文字列を返す。 +extern std::string string_trim(const std::string& str); + // 文字列中の ASCII 大文字を小文字にした新しい文字列を返す extern std::string string_tolower(const std::string& str); @@ -35,14 +38,17 @@ starts_with_ignorecase(const std::string // c が str の先頭あるいは末尾にあれば、先頭(末尾) に空要素が出来る。 // 連続する c は同一の区切りとはみなさない。 // c は ',' のようなのを想定している。 -extern std::vector string_split(const char *str, int len, char c); +// nlimit は戻り値リストの最大要素数で、0 なら指定なし。 +extern std::vector string_split(const char *str, int len, char c, + int nlimit = 0); // 文字列 str を文字 c で分割したリストを返す。 -static inline std::vector string_split(const char *str, char c) { - return string_split(str, strlen(str), c); +static inline std::vector string_split(const char *str, char c, + int nlimit = 0) { + return string_split(str, strlen(str), c, nlimit); } // 文字列 str を文字 c で分割したリストを返す。 static inline std::vector string_split(const std::string& str, - char c) { - return string_split(str.c_str(), str.size(), c); + char c, int nlimit = 0) { + return string_split(str.c_str(), str.size(), c, nlimit); }