ホームページ >バックエンド開発 >C++ >「strtok()」を使用せずに「std::string」をトークン化する方法は?

「strtok()」を使用せずに「std::string」をトークン化する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 18:34:03987ブラウズ

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

strtok を使用した std::string のトークン化

std::string のトークン化は、さまざまな方法を使用して実行できます。一般的なアプローチの 1 つは、C 関数 strtok() を使用することです。これは、文字配列を入力として受け取り、指定された区切り文字に基づいてトークンに分割します。ただし、std::string オブジェクトは文字配列を指していないため、strtok() に直接渡すことはできません。

この制限を克服するには、別の方法を使用して std::string をトークン化できます。そのような方法の 1 つは、istringstream オブジェクトを使用することです。このオブジェクトは、std::string をコンストラクターに渡すことによって作成できます。その後、getline() 関数を使用して、istringstream オブジェクトを使用して文字列からトークンを読み取ることができます。この関数は 2 番目の引数として区切り文字を受け取ります。

#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-to-tokenize" を、"-" 文字で区切られた一連のトークンに変換します。 getline() 関数を使用して文字列から各トークンを抽出し、トークンがコンソールに出力されます。

istringstream を使用する代わりに、Boost.Tokenizer などのユーティリティを使用することもできます。文字列をトークン化するための、より柔軟でカスタマイズ可能なアプローチ。ただし、通常、基本的なトークン化のニーズには isstringstream アプローチで十分です。

以上が「strtok()」を使用せずに「std::string」をトークン化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。