Skip to content

Instantly share code, notes, and snippets.

@sasairc
Last active October 18, 2018 08:45
Show Gist options
  • Save sasairc/0bfe73b7100fc3111efc287ca47f3a84 to your computer and use it in GitHub Desktop.
Save sasairc/0bfe73b7100fc3111efc287ca47f3a84 to your computer and use it in GitHub Desktop.
それなりに便利な文字列操作ライブラリ 6

今回はドラえもんが置換されます。分量は気分次第。

変更点

diff --git a/src/typestring.h b/src/typestring.h
index 3651f37..36c968f 100644
--- a/src/typestring.h
+++ b/src/typestring.h
@@ -75,6 +75,7 @@ typedef struct STRING {
     int     (*shrink_to_fit)(STRING** self);
     int     (*resize)(STRING** self, size_t n, char const c);
     int     (*assign)(STRING** self, char* const str);
+    int     (*prepend)(STRING** self, char* const str);
     int     (*append)(STRING** self, char* const str);
     int     (*push_back)(STRING** self, char const c);
     void    (*pop_back)(STRING** self);
@@ -84,8 +85,9 @@ typedef struct STRING {
     int     (*replace)(STRING** self, size_t pos, size_t n, char* const str);
     int     (*empty)(STRING* self);
     char    (*at)(STRING* self, size_t pos);
-    char    (*front)(STRING* self);
-    char    (*back)(STRING* self);
+    char*   (*front)(STRING* self);
+    char*   (*back)(STRING* self);
+    char*   (*data)(STRING* self);
     char*   (*c_str)(STRING* self);
     int     (*copy)(STRING* self, STRING** dest);
     size_t  (*c_copy)(STRING* self, char** dest);
@@ -123,15 +125,20 @@ typedef struct STRING {
     int     (*slice)(STRING** self, char* const str);
     int     (*delete_prefix)(STRING** self, char* const str);
     int     (*delete_suffix)(STRING** self, char* const str);
+    int     (*sub)(STRING** self, char* const src, char* const dest);
+    int     (*gsub)(STRING** self, char* const src, char* const dest);
     int     (*to_i)(STRING* self, int base);
     long    (*to_l)(STRING* self, int base);
     float   (*to_f)(STRING* self);
     int     (*reverse)(STRING** self);
     int     (*ascii_only)(STRING* self);
+    int     (*digit_only)(STRING* self);
     int     (*each_line)(STRING* self, char* const delim, void (*fn)(STRING*));
     int     (*each_byte)(STRING* self, void (*fn)(char));
     int     (*each_char)(STRING* self, void (*fn)(char*));
     int     (*each_codepoint)(STRING* self, void (*fn)(uint32_t));
+    char*   (*crypt)(STRING* self, char* const salt);
+    int     (*crypt2)(STRING* self, char* const salt, char** dest);
     void    (*clear)(STRING** self);
     void    (*release)(STRING* self);

関数のリスト の続きの続きの続きの続き

front - 先頭要素へのポインタを取得する (変更)

back - 末尾要素へのポインタを取得する (変更)

data - データを取得する

prepend - 先頭に文字列を追加する

digit_only - 数字だけで構成されているか調べる

sub - 最初の任意文字列を置き換える

gsub - 全ての任意文字列を置き換える

crypt - 文字列を暗号化する

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment