본문 바로가기
프로그래밍 언어/c c++

[c c++] 문자열을 특정 문자 기준으로 자르기1 strtok

by m2162003 2020. 4. 11.
char str[10];
str = "hello i am" 
char *p = strtok(str, " ") //공백을 기준으로 자른다. 근데 한번만 잘라준다.

 

strtok의 작동방식

문자열을 보고 '특정 문자'가 나오면 특정문자를 '\0'으로 바꿔준다.

그리고 p는 str부터 \0까지의 문자열을 저장

 

이게 한번만 반복되기 때문에 여러번 하려면

 

#include <string.h>

char str[10]; 문자열 저장
char *str[10]; 문자열 리스트 저장
str = "hello i am" 

char *p = strtok(str, " ")
while(ptr != null) //마지막 문자열까지
{
  strcpy(str[i++], p);  //문자열 복사
  p = strtok(null, " ");
} 

이렇게 된다.

 

근데 c++의 string을 사용하는 경우 저게 안먹힌다....

우째야 하나? string을 char로 바꿔줘야 먹힌다.

 

#include <cstring>


string a =  "hello i am";
char str[100]; //문자열 하나
string str_arr[100]; //문자열 리스트

strcpy(str, a.c_str());// char로 바꿔주기
char *p = strtok(str, " ");

while(p != null) {
  str_arr[i++] = string(p);
  p = strtok(null, " ");
}

댓글