C++で文字列を解析する方法


  1. 文字列を区切り文字に基づいて分割する方法: 文字列を区切り文字(例えば、スペースやカンマ)で分割するには、C++の標準ライブラリであるstd::istringstreamを使用します。以下のコード例を参考にしてください。
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
int main() {
    std::string input = "Hello World! This is a sample string.";
    std::istringstream iss(input);
    std::vector<std::string> tokens;
    std::string token;
    while (std::getline(iss, token, ' ')) {
        tokens.push_back(token);
    }
    for (const auto& t : tokens) {
        std::cout << t << std::endl;
    }
    return 0;
}

このコードでは、std::istringstreamを使用して文字列をスペースで分割し、std::vectorに格納しています。

  1. 正規表現を使用してパターンに基づいて文字列を解析する方法: 正規表現を使用すると、特定のパターンに一致する文字列を抽出できます。C++ではstd::regexを使用して正規表現を扱います。以下のコード例を参考にしてください。
#include <iostream>
#include <regex>
#include <string>
int main() {
    std::string input = "Date: 2024-02-28";
    std::regex pattern(R"(\d{4}-\d{2}-\d{2})");
    std::smatch matches;
    if (std::regex_search(input, matches, pattern)) {
        std::cout << "Match found: " << matches[0] << std::endl;
    }
    return 0;
}

このコードでは、正規表現パターン\d{4}-\d{2}-\d{2}に一致する文字列を抽出しています。