GTK+ 2.0 Tutorial

<<< Previous

GLib

Next >>>


Обработка строки

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, ... );

<<< Previous

Home

Next >>>

Timers

Up

Utility and Error Functions