>백엔드 개발 >C++ >C++에서 strtok() 함수 구현

C++에서 strtok() 함수 구현

WBOY
WBOY앞으로
2023-09-01 19:21:041566검색

C++에서 strtok() 함수 구현

strtok() 함수는 C++에서 가장 일반적으로 사용되는 함수 중 하나입니다. 이 기능은 구분 기호를 가이드로 사용하여 텍스트를 더 작은 덩어리나 토큰으로 분할할 수 있습니다. strtok() 함수 덕분에 C++에서 문자열 작업이 쉽습니다. 이 기사에서는 정의, 구문, 알고리즘 및 다양한 구현 전략을 포함하여 strtok() 함수에 대해 자세히 설명합니다. 명심해야 할 점은 strtok 함수에는 몇 가지 제한 사항과 잠재적인 단점이 있다는 것입니다. 예를 들어 원래 문자열을 직접 변경하므로 const 또는 읽기 전용 문자열과 함께 사용할 수 없습니다. 빈 문자열이나 시퀀스에서 반복되는 구분 기호와 같은 극단적인 경우와 예기치 않은 입력도 처리하기 어려울 수 있습니다.

이러한 단점에도 불구하고 이 기능은 많은 프로그래머에게 유용한 도구로 남아 있으며 텍스트 처리, 데이터 구문 분석 및 네트워크 프로토콜을 포함한 다양한 응용 프로그램에서 자주 사용됩니다. 이는 많은 일반적인 프로그래밍 작업을 크게 단순화할 수 있는 유연하고 강력한 기능입니다.

strtok() 함수의 특징

문자열을 구분 기호를 기준으로 더 작은 청크나 토큰으로 분할하려면 C++에서 strtok() 함수를 사용하세요. 토큰화해야 하는 문자열에 대한 포인터와 구분 기호 문자가 있는 문자열이 함수 A에 대한 두 가지 입력입니다. 문자열의 첫 번째 토큰에 대한 포인터는 문자열에 토큰이 남아 있는 한 동일한 문자열 매개변수를 사용하여 함수에 대한 연속 호출이 추가 토큰을 반환하며 이는 while 루프의 NULL 포인터의 도움으로 발생합니다. .'strtok()' 함수를 다시 호출할 때 첫 번째 인수로 NULL을 제공하면 함수가 동일한 문자열의 이전 토큰화를 중단한 위치를 선택하도록 지시합니다.

입력 문자열을 첫 번째 인수로 사용하여 'strtok()' 함수가 처음 호출되면 처음에 문자열에서 첫 번째 토큰을 찾기 시작하고 초기 토큰을 찾으면 해당 구분 기호를 대체하여 종료합니다. 그 뒤에 널 문자(''0'')가 옵니다. 'strtok()'이 NULL 포인터를 첫 번째 인수로 사용하여 다시 사용되면 함수는 문자열의 이전 토큰화를 중단한 위치를 선택합니다. 이전 토큰 바로 뒤에 구분 기호의 다음 모양을 계속 찾습니다.

문법

으아악

어디

- `str`은 토큰화할 문자열에 대한 포인터입니다.

- `delimiters`는 구분 기호 문자를 포함하는 문자열입니다.

알고리즘

  • 1단계

    − `strtok()` 함수는 두 개의 인수를 사용합니다. 첫 번째 인수는 토큰화할 입력 문자열이고 두 번째 인수는 입력 문자열을 토큰으로 분할하는 데 사용해야 하는 모든 구분 기호를 포함하는 문자열입니다. .

  • 2단계

    − 함수가 처음 호출되면 입력 문자열이 첫 번째 인수로 전달되고 구분 기호 문자열이 두 번째 인수로 전달됩니다.

    3단계
  • − 이 함수는 입력 문자열에서 구분 기호 문자가 처음 나타나는 것을 검색합니다.
  • 4단계
  • − 구분 문자를 찾으면 이를 null 종결자(`')로 바꿉니다.
  • 5단계 - 다음에 함수가 호출될 때 첫 번째 매개변수는 원래 입력 문자열 대신 `NULL`로 설정되어야 합니다. 이는 함수가 중단된 부분부터 계속하여 문자열에서 다음 토큰을 검색하도록 지시합니다.

  • 6단계 − 함수는 계속해서 구분 기호 문자를 검색하고 문자열 끝에 도달할 때까지 후속 토큰의 시작 부분에 대한 포인터를 반환하며, 이 지점에서 `NULL`을 반환합니다.

  • 따라야 할 접근 방식
  • 방법 1 − 루프와 strtok() 함수 및 단일 구분 기호를 사용하여 코드를 표시하는 프로그램입니다.

방법 2

- 루프와 strtok() 함수 및 여러 구분 기호를 사용하여 코드를 표시하는 프로그램

방법 1 아래는 strtok() 함수와 단일 구분 기호가 포함된 루프를 사용하여 코드를 표시하는 프로그램입니다

이 예에서는 strtok을 사용하여 문자열을 공백으로 분할하는 방법을 보여줍니다. 입력 문자열 str은 먼저 구분 기호 " "와 함께 strtok에 전달됩니다. strtok에 대한 첫 번째 호출은 콘솔에 인쇄되는 첫 번째 토큰("Hi")에 대한 포인터를 반환합니다. strtok은 더 이상 토큰이 없고 각 토큰이 콘솔에 인쇄될 때까지 문자열을 계속 토큰화합니다. strtok에 대한 후속 호출에서는 null 포인터를 첫 번째 매개변수로 전달하여 원래 문자열을 계속 토큰화할 것임을 나타냅니다 예 1

으아악

출력

으아악

방법 2

아래는 루프와 strtok() 함수를 사용하여 여러 구분 기호가 있는 코드를 표시하는 프로그램입니다. 아래는 이에 대한 프로그램 코드입니다.

The '|' and'' (space) delimiters are used to tokenize the string "The boy|is|standing|with his pet|lazy dog." in this example. Once with the string as the first argument and the characters '|' and'' as the second argument, the strtok() method is called twice. Following calls return the remaining tokens, the initial call returns the first token, "The." Until all tokens have been extracted, the loop keeps running.

Example-2

#include <iostream> 
#include <cstring> 
 
int main() { 
   char str[] = "The boy|is|standing|with his pet|lazy dog."; 
   char* token = strtok(str, "| "); 
   while (token != NULL) { 
      std::cout << token << std::endl; 
      token = strtok(NULL, "| "); 
   } 
   return 0; 
} 

Output

The 
boy 
is 
standing 
with 
his 
pet 
lazy 
dog.

结论

总之,C++的strtok函数是一个有用且有效的用于操作字符串的工具。尽管它有一些重要的限制和潜在的缺点,但它仍然是解析和处理文本数据的常见选择,并且对于任何编码人员来说都是一个有用的工具。

위 내용은 C++에서 strtok() 함수 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제