C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのStringstream


ここでは、C++での文字列ストリームを確認します。文字列ストリームは、文字列オブジェクトを文字列に関連付けます。これを使用すると、文字列からcinのようなストリームであるかのように読み取ることができます。

Stringstreamにはさまざまなメソッドがあります。これらは以下のようなものです-

clear(): ストリームをクリアするために使用されます

str(): コンテンツがストリームに存在する文字列オブジェクトを取得および設定するには

オペレーター<<: これにより、文字列ストリームに1つの文字列が追加されます

オペレーター>>: これは、stringstreamオブジェクトから読み取るために使用されます。

文字列ストリームの2つの例を見てみましょう。最初のプログラムでは、単語を別々の文字列に分割します。

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main() {
   string str("Hello from the dark side");
   string tmp; // A string to store the word on each iteration.
   stringstream str_strm(str);
   vector<string> words; // Create vector to hold our words
   while (str_strm >> tmp) {
      // Provide proper checks here for tmp like if empty
      // Also strip down symbols like !, ., ?, etc.
      // Finally push it.
      words.push_back(tmp);
   }
   for(int i = 0; i<words.size(); i++)
      cout << words[i] << endl;
}

出力

Hello
from
the
dark
side

ここでは、文字列ストリームを使用して10進数を16進数に変換します。

#include<iostream>
#include<sstream>
using namespace std;
main(){
   int decimal = 61;
   stringstream my_ss;
   my_ss << hex << decimal;
   string res = my_ss.str();
   cout << "The hexadecimal value of 61 is: " << res;
}

出力

The hexadecimal value of 61 is: 3d

  1. C++での文字列のトークン化

    このセクションでは、C++で文字列をトークン化する方法を説明します。 Cでは、文字配列にstrtok()関数を使用できます。ここに文字列クラスがあります。次に、その文字列から区切り文字を使用して文字列を切り取る方法を説明します。 C ++機能を使用するには、文字列を文字列ストリームに変換する必要があります。次に、getline()関数を使用して、タスクを実行できます。 getline()関数は、文字列ストリーム、出力を送信するための別の文字列、およびストリームのスキャンを停止するための区切り文字を受け取ります。 関数がどのように機能しているかを理解するために、次の例を見てみましょう。 サン

  2. C ++で文字列をトークン化しますか?

    最初の方法は、文字列ストリームを使用して、スペースで区切られた単語を読み取ることです。これは少し制限されていますが、適切なチェックを提供すれば、タスクはかなりうまくいきます。 例 #include <vector> #include <string> #include <sstream> using namespace std; int main() {    string str("Hello from the dark side");    string tmp; // A string