2013-12-18 3 views
0

나는 C++에서의 char *의 형이 내 코드하위 문자열

void DBManager::printMatched(char* line, char* fileName) 
{ 
    line = strtok(line,"Show"); 
    char* teamAName = strtok(line," "); 
    char* teamACity = strtok(NULL,"-"); 
    char* teamBName = strtok(NULL," "); 
    char* teamBCity = strtok(NULL,"\n"); 
} 

것을 고양이 문자열을 시도하고,이 줄의 텍스트입니다 "연락처보기 ABCDE의 fghij - klmnop qrstu"

이 변수 데이터입니다 :

teamAName = abcde 
teamACity = fghij 
teamBName = klmnop 
teamBCity = qrs 

어떻게 내가 행의에로 절단 할 필요가 teamBCity를 해결할 수 있습니다.

저는 Linux 시스템에서 작동합니다.

+0

문제는 호출 루틴에있는 것처럼 보입니다. 'printMatched()'는 어떻게 불려지나요? – chux

+0

내가 functuin을 호출 할 때 \ n이 행의 끝에 있지만 줄 = strtok (줄, "표시") 이후입니다. \ n이 내려졌습니다. – royb

+0

'printMatched()'를 사용하고'teamBCity'를 출력하는 코드를 보여주십시오. 나는 문제가'line'에 대한 인자가 어떻게 생성되는지, 또는 어떻게'teamBCity'를 인쇄했는지에 대한 것입니다. – chux

답변

1

나는 이것이 당신이 원하는 것이라고 생각합니다. 당신의 모범을 전적으로 확신하지 못합니다. 그것은 분명히 개선 될 수 있고 더 많은 C++ ish 설비를 사용하고자 할 것입니다.

void DBManager::printMatched(char* line, char* fileName) 
{ 
    char* linecpy = strdup(line); 

    char* dummy  = strtok(linecpy," "); 
    char* teamAName = strtok(NULL," "); 
    char* teamACity = strtok(NULL," "); 
      dummy  = strtok(NULL," "); 
    char* teamBName = strtok(NULL," "); 
    char* teamBCity = strtok(NULL," \n"); 

    printf("teamAName %s\n", teamAName); 
    printf("teamACity %s\n", teamACity); 
    printf("teamBName %s\n", teamBName); 
    printf("teamBCity %s\n", teamBCity); 

    // do something with strings here? 
}