str_util.h.svn-base
来自「SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多K」· SVN-BASE 代码 · 共 131 行
SVN-BASE
131 行
/* Written by Krzysztof Kowalczyk (http://blog.kowalczyk.info) The author disclaims copyright to this source code. */#ifndef STR_UTIL_H_#define STR_UTIL_H_#ifdef __cplusplusextern "C"{#endif/* DOS is 0xd 0xa */#define DOS_NEWLINE "\x0d\x0a"/* Mac is single 0xd */#define MAC_NEWLINE "\x0d"/* Unix is single 0xa (10) */#define UNIX_NEWLINE "\x0a"#define UNIX_NEWLINE_C 0xa#ifdef _WIN32 #define DIR_SEP_CHAR '\\' #define DIR_SEP_STR "\\" /* Warning: ordinary forward slashes (/) are often valid on Windows too */#else #define DIR_SEP_CHAR '/' #define DIR_SEP_STR "/"#endifvoid no_op(void);#ifdef DEBUG #ifdef _WIN32 #define DBG_OUT win32_dbg_out #define DBG_OUT_HEX win32_dbg_out_hex #else #define DBG_OUT printf #define DBG_OUT_HEX(...) no_op() #endif#else #define DBG_OUT(...) no_op() #define DBG_OUT_HEX(...) no_op()#endifint char_is_ws_or_zero(char c);int char_is_ws(char c);int char_is_digit(char c);int char_is_dir_sep(char c);/* TODO: should probably be based on MSVC version */#if defined(__GNUC__) || !defined(_WIN32) || (_MSC_VER < 1400)void strcpy_s(char *dst, size_t dstLen, const char *src);#endif#define str_len strlenint str_eq(const char *str1, const char *str2);int str_ieq(const char *str1, const char *str2);#define str_eq_no_case str_ieqint str_eqn(const char *str1, const char *str2, int len);int str_startswith(const char *str, const char *txt);int str_startswithi(const char *str, const char *txt);int str_endswith(const char *str, const char *end);int str_endswithi(const char *str, const char *end);int str_endswith_char(const char *str, char c);int str_empty(const char *str);int str_copy(char *dst, size_t dst_cch_size, const char *src);int str_copyn(char *dst, size_t dst_cch_size, const char *src, size_t src_cch_size);char * str_dup(const char *str);char * str_dupn(const char *str, size_t len);char * str_cat_s(char *dst, size_t dst_cch_size, const char *src);char * str_catn_s(char *dst, size_t dst_cch_size, const char *src, size_t src_cch_size);char * str_cat(const char *str1, const char *str2);char * str_cat3(const char *str1, const char *str2, const char *str3);char * str_cat4(const char *str1, const char *str2, const char *str3, const char *str4);char * str_url_encode(const char *str);int char_needs_url_escape(char c);int str_contains(const char *str, char c);char * str_printf_args(const char *format, va_list args);char * str_printf(const char *format, ...);const char *str_find_char(const char *txt, char c);char * str_split_iter(char **txt, char c);char * str_normalize_newline(const char *txt, const char *replace);void str_strip_left(char *txt, const char *to_strip);void str_strip_ws_left(char *txt);void str_strip_right(char *txt, const char *to_strip);void str_strip_ws_right(char *txt);void str_strip_both(char *txt, const char *to_strip);void str_strip_ws_both(char *txt);char * str_escape(const char *txt);int str_skip(const char **strp, const char *expect);int str_copy_skip_until(const char **strp, char *dst, size_t dst_size, char stop);char * str_parse_possibly_quoted(char **txt);BOOL str_to_double(const char *txt, double *resOut);char * mem_to_hexstr(const unsigned char *buf, int len);BOOL hexstr_to_mem(const char *s, unsigned char *buf, int bufLen);int hex_str_decode_byte(const char **txt);BOOL str_dup_replace(char **dst, const char *src);size_t digits_for_number(int64_t num);#ifdef DEBUGvoid str_util_test(void);#endiftypedef struct str_item str_item;typedef struct str_array str_array;struct str_item { void * opaque; /* opaque data that the user can use */ char str[1];};struct str_array { int items_allocated; int items_count; str_item ** items;};void str_array_init(str_array *str_arr);void str_array_free(str_array *str_arr);void str_array_delete(str_array *str_arr);str_item *str_array_set(str_array *str_arr, int index, const char *str);str_item *str_array_add(str_array *str_arr, const char *str);str_item *str_array_get(str_array *str_arr, int index);int str_array_get_count(str_array *str_arr);int str_array_exists_no_case(str_array *str_arr, const char *str);str_item *str_array_add_no_dups(str_array *str_arr, const char *str);#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?