특정 구분 기호로 구분 된 3 개의 값을 병렬로 구문 분석합니다.연속 된 구분 기호가있는 strtok_s 동작
token1 = strtok_s(str1, separator, &nextToken1);
token2 = strtok_s(str2, separator, &nextToken2);
token3 = strtok_s(str3, separator, &nextToken3);
while ((token1 != NULL) && (token2 != NULL) && (token3 != NULL))
{
//...
token1 = strtok_s(NULL, separator, &nextToken1);
token2 = strtok_s(NULL, separator, &nextToken2);
token3 = strtok_s(NULL, separator, &nextToken3);
}
'-'가 구분 기호라고 가정합니다.
이1-2-3-45
효과적으로 이러한 부분의 각을 초래할 것 : 동작없이 연속으로 구분 된 문자열이 있다는 것입니다 그러나
1
2
3
45
, 두 개의 연속 구분 된 문자열 :
1-2--3-45
길이가 0 인 문자열을 반환하지 않으므로 그 결과는 건너 뜁니다.
1
2
3
45
하지
1
2
3
45
어떤 해결 방법이나 전략 0 길이 포함한 모든 실제 부품을 얻기 위해 더 적합 할 것인가? 가능한 경우 strtok_s를 다시 구현하지 마십시오.
strtok()은 입력 문자열을 수정하기 때문에 악의적입니다. 그 외에도, 나는 이것에 대한 대답에 대해 궁금합니다. –
필자의 경우, strtok은 원하는 모든 문자열을 수정할 수있다. 나는 원본을 유지하고 복사본을 만들고있다. – MPelletier
필자는 Microsoft의 strtok_s.inl에 들어가서 첫 번째 "구분 기호가없는"문자에 선행 구분 기호가 건너 뛰기 때문에 실제로 이것이 예상 된 동작임을 알았습니다. 흠 ... – MPelletier