1. ホーム
  2. php

[解決済み] PHPのexplode()関数に相当するものはC++にあるのでしょうか?[重複]。

2022-02-17 15:23:47

質問

<ブロッククオート

重複の可能性があります。
C++で文字列を分割する

PHPでは explode() 関数は文字列を受け取り、指定されたデリミターで各要素を区切った配列に切り分けます。

C++で同等の関数はありますか?

どのように解決するのですか?

簡単な実装例を紹介します。

#include <string>
#include <vector>
#include <sstream>
#include <utility>

std::vector<std::string> explode(std::string const & s, char delim)
{
    std::vector<std::string> result;
    std::istringstream iss(s);

    for (std::string token; std::getline(iss, token, delim); )
    {
        result.push_back(std::move(token));
    }

    return result;
}

使用方法

auto v = explode("hello world foo bar", ' ');

注 Jerry の出力イテレータに書き込むというアイデアは、C++ ではよりイディオム的です。実際、出力イテレータのテンプレートと、ベクターを生成するラッパーの両方を提供することで、最大限の柔軟性を確保することができます。

注2: 空のトークンをスキップしたい場合は、次のように if (!token.empty()) .