>백엔드 개발 >C++ >`strtok()`을 사용하지 않고 `std::string`을 토큰화하는 방법은 무엇입니까?

`strtok()`을 사용하지 않고 `std::string`을 토큰화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-07 18:34:03990검색

How to Tokenize a `std::string` Without Using `strtok()`?

strtok를 사용하여 std::string 토큰화

std::string 토큰화는 다양한 방법을 사용하여 수행할 수 있습니다. 일반적인 접근 방식 중 하나는 문자 배열을 입력으로 사용하고 이를 지정된 구분 기호에 따라 토큰으로 나누는 C 함수 strtok()를 사용하는 것입니다. 그러나 std::string 객체는 문자 배열을 가리키지 않기 때문에 strtok()에 직접 전달할 수 없습니다.

이 제한을 극복하기 위해 대체 방법을 사용하여 std::string을 토큰화할 수 있습니다. 그러한 방법 중 하나는 std::string을 생성자에 전달하여 생성할 수 있는 istringstream 개체를 사용하는 것입니다. 그런 다음 istringstream 개체를 사용하여 두 번째 인수로 구분 기호를 사용하는 getline() 함수를 사용하여 문자열에서 토큰을 읽을 수 있습니다.

#include <iostream>
#include <string>
#include <sstream>

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;
    while (std::getline(iss, token, '-')) {
        std::cout << token << std::endl;
    }
    return 0;
}

이 예에서 istringstream 개체는 std::string "some-text-to-tokenize"를 "-" 문자로 구분된 일련의 토큰으로 변환합니다. getline() 함수는 문자열에서 각 토큰을 추출하는 데 사용되며 토큰은 콘솔에 인쇄됩니다.

istringstream을 사용하는 대신 Boost.Tokenizer와 같은 유틸리티를 사용하는 것도 있습니다. 문자열 토큰화에 대한 보다 유연하고 사용자 정의 가능한 접근 방식입니다. 그러나 istringstream 접근 방식은 일반적으로 기본적인 토큰화 요구 사항에 충분합니다.

위 내용은 `strtok()`을 사용하지 않고 `std::string`을 토큰화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.