C++에서 문자열을 분할하는 방법

How Split String C



문자열 데이터로 작업하는 것은 모든 프로그래밍 언어의 필수적인 부분입니다. 때로는 프로그래밍 목적으로 문자열 데이터를 분할해야 합니다. split() 함수는 문자열을 여러 부분으로 나누기 위해 많은 프로그래밍 언어에 존재합니다. C++에는 문자열 분할을 위한 내장 split() 함수가 없지만 C++에는 다음을 사용하는 것과 같이 동일한 작업을 수행하는 여러 가지 방법이 있습니다. getline() 기능, strtok() 기능, 사용 찾기() 그리고 삭제() C++에서 문자열을 분할하기 위해 이러한 함수를 사용하는 방법은 이 튜토리얼에서 설명했습니다.

전제 조건

이 튜토리얼의 예제를 확인하기 전에 시스템에 g++ 컴파일러가 설치되어 있는지 확인해야 합니다. Visual Studio Code를 사용하는 경우 필요한 확장을 설치하여 C++ 소스 코드를 컴파일하여 실행 코드를 만듭니다. 여기에서 Visual Studio Code 응용 프로그램은 C++ 코드를 컴파일하고 실행하는 데 사용되었습니다.







getline() 함수를 사용하여 문자열 분할

getline() 함수는 특정 구분 기호 또는 구분 기호가 발견될 때까지 문자열 또는 파일 내용에서 문자를 읽고 각 구문 분석 문자열을 다른 문자열 변수에 저장하는 데 사용됩니다. 함수는 문자열 또는 파일의 전체 내용이 구문 분석될 때까지 작업을 계속합니다. 이 함수의 구문은 다음과 같습니다.



통사론:



아이스트림&도착(아이스트림&이다, 문자열&str,구분하다);

여기서 첫 번째 매개변수는 이스트림, 문자를 추출할 개체입니다. 두 번째 매개변수는 추출된 값을 저장할 문자열 변수입니다. 세 번째 매개변수는 문자열 추출에 사용할 구분 기호를 설정하는 데 사용됩니다.





다음 코드로 C++ 파일을 만들어 공백 구분 기호를 사용하여 문자열을 분할합니다. getline() 기능. 여러 단어의 문자열 값이 변수에 할당되었으며 공백이 구분 기호로 사용되었습니다. 추출된 단어를 저장하기 위해 벡터 변수가 선언되었습니다. 다음으로 'for' 루프는 벡터 배열의 각 값을 인쇄하는 데 사용되었습니다.

//필요한 라이브러리 포함
#포함하다
#포함하다
#포함하다
#포함하다

정수기본()
{
//분리할 문자열 데이터 정의
시간::strData= 'C++ 프로그래밍 배우기';
// 구분 기호로 사용할 상수 데이터 정의
상수 분리 기호= '';
//문자열의 동적 배열 변수 정의
시간::벡터출력 배열;
//문자열에서 스트림 생성
시간::문자열 스트림스트림 데이터(strData);
/ *
사용할 문자열 변수 선언
분할 후 데이터를 저장하기 위해
* /

시간::시간;
/ *
루프는 분할된 데이터를 반복하고
데이터를 배열에 삽입
* /

동안 (시간::도착(streamData, val, 구분자)) {
출력 배열.푸시백(시간);
}
//분할된 데이터 출력
시간::비용 << '원래 문자열은 다음과 같습니다.' <<strData<<시간::;
//배열을 읽고 분할된 데이터를 인쇄합니다.
시간::비용 << 'N공백을 기준으로 문자열을 분할한 후 값:' <<시간::;
~을위한 (자동 &시간:출력 배열) {
시간::비용 <<시간<<시간::;
}
반품 0;
}

산출:

위의 코드를 실행하면 다음 출력이 나타납니다.

strtok() 함수를 사용하여 문자열 분할

strtok() 함수는 구분 기호를 기반으로 문자열의 일부를 토큰화하여 문자열을 분할하는 데 사용할 수 있습니다. 존재하는 경우 다음 토큰에 대한 포인터를 반환합니다. 그렇지 않으면 NULL 값을 반환합니다. NS 문자열.h 이 기능을 사용하려면 헤더 파일이 필요합니다. 루프는 문자열에서 모든 분할된 값을 읽어야 합니다. 첫 번째 인수에는 구문 분석될 문자열 값이 포함되고 두 번째 인수에는 토큰을 생성하는 데 사용할 구분 기호가 포함됩니다. 이 함수의 구문은 다음과 같습니다.

통사론:

* 스트톡 ( *str,상수 *구분 기호);

strtok() 함수를 사용하여 문자열을 분할하는 다음 코드로 C++ 파일을 만듭니다. 문자 배열은 구분 기호로 콜론(':')을 포함하는 코드에서 정의됩니다. 다음으로, strtok() 함수는 문자열 값과 구분 기호로 호출되어 첫 번째 토큰을 생성합니다. NS ' 동안 ' 루프는 다른 토큰과 토큰 값을 생성하기 위해 정의됩니다. 없는 값이 발견됩니다.

//필요한 라이브러리 포함
#포함하다
#포함하다

정수기본()
{
//문자 배열 선언
strArray[] = 'Mehrab Hossain :IT 전문가 : [이메일 보호] :+8801726783423';
//':'를 기준으로 첫 번째 토큰 값을 반환합니다.
*토큰 값= 스트톡(문자열 배열,':');
//카운터 변수 초기화
정수카운터= 1;
/ *
루프를 반복하여 토큰 값을 인쇄합니다.
나머지 문자열 데이터를 분할하여
다음 토큰 값
* /

동안 (토큰 값!= 없는)
{
만약(카운터== 1)
인쇄('이름: %sN', 토큰 값);
또 다른 만약(카운터== 2)
인쇄('직업: %sN', 토큰 값);
또 다른 만약(카운터== )
인쇄('이메일: %sN', 토큰 값);
또 다른
인쇄('모바일 번호: %sN', 토큰 값);
토큰 값= 스트톡(없는,':');
카운터++;
}
반품 0;
}

산출:

위의 코드를 실행하면 다음 출력이 나타납니다.

find() 및 erase() 함수를 사용하여 문자열 분할

C++에서는 find() 및 erase() 함수를 사용하여 문자열을 분할할 수 있습니다. 다음 코드로 C++ 파일을 만들어 특정 구분 기호를 기반으로 문자열 값을 분할하는 find() 및 erase() 함수의 사용을 확인합니다. 토큰 값은 find() 함수를 이용하여 구분자 위치를 찾아 생성되며, 토큰 값은 erase() 함수를 이용하여 구분자를 제거한 후 저장됩니다. 이 작업은 문자열의 전체 내용이 구문 분석될 때까지 반복됩니다. 다음으로 벡터 배열의 값이 인쇄됩니다.

//필요한 라이브러리 포함
#포함하다
#포함하다
#포함하다

정수기본(){
//문자열 정의
시간::문자열 데이터= '방글라데시와 일본, 독일과 브라질';
// 구분 기호 정의
시간::분리 기호= '그리고';
//벡터 변수 선언
시간::벡터국가{};
//정수변수 선언
정수위치;
//문자열 변수 선언
시간::outstr, 토큰;

/ *
substr() 함수를 사용하여 문자열 분할
분할된 단어를 벡터에 추가
* /

동안 ((위치=문자열 데이터.찾기(분리 기호)) !=시간::::NPO) {
토큰=문자열 데이터.하위 문자열(0, 위치);
//분리된 문자열 앞의 여분의 공백을 제거합니다.
국가.푸시백(토큰.삭제(0, 토큰.find_first_not_of('')));
문자열 데이터.삭제(0, 위치+분리 기호.길이());
}
// 마지막 단어를 제외한 모든 분할된 단어를 인쇄합니다.
~을위한 (상수 자동 &아웃스트:국가) {
시간::비용 <<아웃스트<<시간::;
}
//마지막으로 분할된 단어를 인쇄합니다.
시간::비용 <<문자열 데이터.삭제(0, 문자열 데이터.find_first_not_of('')) <<시간::;
반품 0;
}

산출:

위의 코드를 실행하면 다음 출력이 나타납니다.

결론

C++에서 문자열을 분할하는 세 가지 다른 방법은 새로운 파이썬 사용자가 C++에서 쉽게 분할 작업을 수행하는 데 도움이 되는 간단한 예제를 사용하여 이 자습서에서 설명되었습니다.