C++でstringstreamから要素を削除する方法


  1. seekp()とseekg()を使用する方法: stringstreamクラスは、内部の読み取り位置と書き込み位置を追跡するために、それぞれseekg()とseekp()というメンバ関数を提供しています。これらの関数を使用して、読み取り位置と書き込み位置を変更し、要素を削除することができます。
#include <iostream>
#include <sstream>
int main() {
    std::stringstream ss("Hello, World!");
    ss.seekg(7); // 7文字目から読み込む位置に移動
    ss.seekp(7); // 7文字目から書き込む位置に移動
    ss.str(ss.str().substr(0, 7) + ss.str().substr(13)); // 7文字目から13文字目までの要素を削除
    std::cout << ss.str() << std::endl; // 出力: "Hello,orld!"
    return 0;
}
  1. 入力演算子(>>)を使用する方法: stringstreamクラスの入力演算子(>>)を使用して、要素を読み飛ばすことができます。読み飛ばす要素の数を指定することで、要素を削除することができます。
#include <iostream>
#include <sstream>
int main() {
    std::stringstream ss("Hello, World!");
    std::string temp;
    ss >> temp >> temp >> temp; // 最初の3つの要素を読み飛ばす
    std::cout << ss.str() << std::endl; // 出力: "World!"
    return 0;
}
  1. 文字列操作を使用する方法: stringstreamから文字列を取得し、文字列操作を使用して要素を削除することもできます。例えば、substr()関数を使用して要素を指定した位置から削除することができます。
#include <iostream>
#include <sstream>
int main() {
    std::stringstream ss("Hello, World!");
    std::string str = ss.str();
    str = str.substr(7); // 7文字目以降の要素を削除
    std::cout << str << std::endl; // 出力: "orld!"
    return 0;
}

これらは、stringstreamから要素を削除するためのいくつかの一般的な方法です。状況に応じて最適な方法を選択し、コードに組み込んでください。