обработка строки
glib определяет новый тип, названный
gstring, который является подобным
стандартному c string, но который увеличивается
автоматически. это строковые данные с
нулевым символом в конце, что дает вам
- защиту от буферного переполнения,
программмируя ошибки в пределах вашей
программмы. это - очень важная
особенность, и следовательно я рекомендую,
чтобы вы использовали gstrings. сам
gstring имеет простое общее определение:
struct gstring
{
gchar *str; /* points to the string's current \0-terminated value. */
gint len; /* current length */
};
|
есть
множество операций, которые вы можете
сделать с gstring.
gstring *g_string_new( gchar *init );
|
эта
конструкция gstring, копирует строковое
значение из init в gstring и возвращает
указатель на него. null можно дать как
параметр для первоначально пустого
gstring.
void g_string_free( gstring *string,
gint free_segment );
|
освобождаем память для данного gstring.
если free_segment true, то также освобождаются
его символьные данные.
gstring *g_string_assign( gstring *lval,
const gchar *rval );
|
это
копирует символы из rval в lval, удаляя
предыдущее содержание lval. отметьте,
что lval будет удлинен по мере необходимости,
чтобы вместить содержание строки, в
отличие от стандартной функции strcpy().
остальная
часть этих функций должна быть относительно
очевидной ("_c" версии принимают
символ вместо строки):
gstring *g_string_truncate( gstring *string,
gint len );
gstring *g_string_append( gstring *string,
gchar *val );
gstring *g_string_append_c( gstring *string,
gchar c );
gstring *g_string_prepend( gstring *string,
gchar *val );
gstring *g_string_prepend_c( gstring *string,
gchar c );
void g_string_sprintf( gstring *string,
gchar *fmt,
...);
void g_string_sprintfa ( gstring *string,
gchar *fmt,
... );
|
|