이 게시물은 C++에서 쉼표로 구분된 문자열을 구문 분석하는 방법에 대해 설명합니다.

1. 문자열 스트림 사용

쉼표로 구분된 문자열을 분할하는 표준 솔루션은 std::stringstream. 다음은 한 번에 한 문자를 읽고 바로 앞에 있는 문자(예: 쉼표)를 삭제하여 사용법을 보여줍니다.

다운로드  코드 실행

결과:

1 2 3 4 5

 
if 문 대신 while 루프를 사용하여 문자열의 여러 연속 구분 기호 또는 공백을 처리하도록 코드를 쉽게 확장할 수 있습니다.

다운로드  코드 실행

결과:

1 2 3 4 5

 
위의 두 솔루션 모두 결과를 정수 Vector에 넣고 반환합니다. 코드는 문자열 Vector를 생성하도록 쉽게 수정할 수 있습니다.

다운로드  코드 실행

결과:

1 2 3 4 5

2. 사용 std::string::find 기능

또 다른 솔루션은 다음을 사용하는 것입니다. std::string::find 문자열에서 구분 기호의 다음 위치를 가져오고 마지막 구분 기호 위치와 현재 구분 기호 위치 사이의 하위 문자열을 Vector에 삽입하는 함수입니다.

다음 코드는 정수 Vector를 구성하여 이를 보여주지만 문자열 Vector를 구성하고 잘못된 입력(연속 구분 기호, 공백 등)을 처리하도록 쉽게 수정할 수 있습니다.

다운로드  코드 실행

결과:

1 2 3 4 5

3. 정규 표현식 사용

쉼표로 구분된 문자열을 구문 분석하는 또 다른 그럴듯한 솔루션은 정규식을 사용하는 것입니다. 정규식은 시퀀스에 대해 패턴 일치를 수행하는 표준화된 방법입니다.

다운로드  코드 실행

결과:

1 2 3 4 5

4. 부스트 라이브러리 사용하기

Boost C++ 라이브러리는 이 작업을 위한 여러 유틸리티 클래스도 제공합니다. 그만큼 Boost tokenizer 클래스는 특정 문자를 구분 기호로 해석하여 시퀀스에 포함된 토큰 보기를 제공합니다.

코드 다운로드

결과:

1 2 3 4 5

 
Boost 라이브러리도 제공합니다. boost::algorithm::split 표현식을 토큰화하는 함수는 다음과 같습니다. strtok C의 기능. boost::algorithm::split 함수는 입력 시퀀스를 술어를 사용하여 제공된 구분 기호로 구분된 토큰으로 분할합니다.

코드 다운로드

결과:

1 2 3 4 5

이것이 C++에서 쉼표로 구분된 문자열을 구문 분석하는 것입니다.