오늘은 g_strsplit의 사용법을 배워야만 했다.
일단 사용법은 다음과 같다.
gchar** g_strsplit (const gchar *string,
const gchar *delimiter,
gint max_tokens);
http://developer.gnome.org/doc/API/2.0/glib/glib-String-Utility-Functions.html#g-strsplit
저거 쓰기 전에 일단 2중 포인터 **string를 선언해야 한다.
char **string;
이렇게 하면 string이라는 이름의 문자열 배열을 "여러개"가질 수 있는 2중 포인터가 선언된다.
char xxxx="abc/123";
string=g_strsplit(xxxx,/,2);
이렇게 하면 string이라는 곳에는 2개의 공간이 확보되어 각각 "abc"와 "123"이라는 문자열이 하나씩 들어간다. 즉, *(string+0) = "abc" 하고 *(string+1)="123"이 실행된 것이다.
즉, xxxx라는 문자열을 /라는 글자를 기준으로 2개로 자르라는 뜻이다. 물론 앞에서부터 자르므로, 뒤에 /가 여러개 있으면 있어도 무시된다. 2대신에 더 큰 숫자를 넣으면 더 여러개로 잘라진다. 만약 max_tokens를 -1을 넣게 되면 /가 나오는데마다 다 잘라준다.
물론 구분자는 /말고 아무거나 써도 된다. 1이든 g든 ^이든.
다행인지 불행인지, 선언만 해놓고 memory allocation은 안해도 된다. 알아서 해준다.

그리고 더불어서 앞에 g_가 말해주듯이 저것은 glib2.0에서 제공하는 함수이다. glib 설치는 알아서 하시고, 컴파일 옵션에 `pkg-config --cflags glib-2.0` `pkg-config --libs glib-2.0`를 넣어줘야 한다. 역따옴표` 포함이라는 사실에 주의!

만약 구분자를 여러개 쓰고 싶으면 g_strsplit_set을 쓰면 된다. 이건 delimeter자리에 여러개의 문자를 넣어도 되는데, 그 여러개 중 아무거나 하나 있으면 거기서 잘라준다. 나머지는 똑같다. 예를들어 !@#를 넣으면 !나 @나 #가 나오기만 하면 잘라준다는 뜻.
by snowall 2007. 8. 14. 04:43