AI Researcher @NCSOFT
TODAY TOTAL
C++ 길이가 다른 라인 스트링 분할 Strtok 예제
C++ fread file buffer Strtok 예제
길이가 다른 Line 파일 읽기

예를 들어 다음과 같이 파일이 구성되어 있다고 해보자.

tst.txt


a<tab>bb<tab>ccc<tab>dddd

bc


bbb<tab>bdfbd<tab>d

...

- 각 Line에는 길이가 다른 String이 <tab>('\t')로 구분되어 있다.

- 각 Line의 String의 개수가 다르다.(없을 수도 있다.)


라인마다 String의 갯수만 다르더라도 조금은 수월했을텐데 String 다루기에 미숙한 사람은 막막할 수 있다. Strtok을 쓸 때

buff2 = strtok(buff,"\n");

buff3 = strtok(buff2,'\t');

위와 같이 chain rule마냥 연결지어 설정해주지 않으면 프로그램이 제대로 동작되지 않는다. 아래와 같이 처리하면 된다.


buff  : 전체 스트링

buff2 : string for line

buff3 : string for tab

buff2 = strtok(buff, "\n");
unsigned int cnt = 0;
int linenum = 0;

    while (buff2) {
           int i = 0;
           int j = 0;
           for (; buff2[i] != '\0'; i++) {
                   buff3[j] = buff2[i];
                   if (buff3[j] == '\t') {
                          buff3[j] = '\0';
                          //처리
                          j = 0;
                   }
                   else {
                          j++;
                  }
           }
           if (j != 0) {
                  buff3[j] = '\0';
           }

           buff2 = strtok(NULL, "\n");
           linenum++;
        }


  Comments,     Trackbacks