etc

[C++] 문자열 분리(strtok, strtok_s)

mongyang 2013. 3. 4. 10:08

문자열 분리.


strtok, strtok_s


기존에 문자열 분리에 사용되던 strtok 은 첫 인자로 대상 문자열,

두 번째 인자로 분리에 기준이 되는 문자를 넣으면 되었다. 즉, 


#include <stdio.h>

#include <string.h>


int main ()

{

  char str[] ="- This, a sample string.";

  char * pch;

  printf ("Splitting string \"%s\" into tokens:\n",str);

  pch = strtok (str," ,.-");

  while (pch != NULL)

  {

    printf ("%s\n",pch);

    pch = strtok (NULL, " ,.-");

  }

  return 0;

}


이런식으로, 사용하면 되었는데...


VS 2005부터 CRT라이브러리의 문자열을 다루는 함수의 안정성에 많은 신경을 쓰면서 


기존의 문자열에 _s 를 붙이는 안전함수를 제공하고 있다. 해서 이 함수를 사용하지 


않으면 위의 warning가 발생하게 된다.


strtok_s 의 사용법은 처음에는 좀 적응이 안되었는데. 다음과 같다. 


int main ()

{

  char str[] ="- 예제, 문자열 분리, 홍길동";


  char * context = NULL;

  char * token = strtok_s(str, ",", &context); // context에는 분리된 후 남은 문자열이 들어간다.

  printf ("분리된 문자열은 \"%s\" 이다:\n",token);

  pch = strtok (str," ,.-");

  while (token)

  {

    token = strtok_s(NULL, ",", &context);

    printf ("%s\n",token);

  }

  return 0;

}


이렇다. 

'etc' 카테고리의 다른 글

[C++] 메모리 가시성과 메모리 장벽  (2) 2015.07.29
[C++] Explicit 의미  (0) 2013.05.10
[Network] IRC구조  (0) 2013.02.22
[C++] warning C4996  (0) 2013.02.21
[SVN] tortoise svn branch merge  (0) 2013.02.13