[再版] C ++でのstringstreamクラスの一般的な使用法

この記事では、主にC ++でのstringstreamクラスの一般的な使用法を紹介します。

1概要

<sstream>は3つのクラス、istringstream、ostringstream、stringstreamを定義します。これらはそれぞれ、ストリームの入力、出力、および入出力操作に使用されます。この記事ではstringstreamに焦点を当て、ストリームの入出力操作を紹介します。

<sstream>は主にデータ型変換に使用されます。<sstream>は文字配列(snprintfメソッド)の代わりに文字列オブジェクトを使用するため、バッファオーバーフローの危険を回避します。さらに、パラメータとターゲットオブジェクトタイプが自動的に導出されるためです。アウトなので、間違ったフォーマッタに問題はありません。簡単に言うと、Cライブラリのデータ型変換と比較して、<sstream>はより安全で、自動で、直接的なものです。

2コード例

2.1データ型変換

以下は、int型を文字列型に変換するプロセスを紹介するコード例です。サンプルコード(stringstream_test1.cpp)は次のとおりです。

1 #include < string >
 2 #include <sstream>
 3 #include <iostream>
 4 #include <stdio.h>
 5   
6  名前空間std を使用 ;
 7 8 int main()
 9 {
 10     stringstream sstream;
 11 string strResult;
 12 int nValue = 1000 ;
 13 14 // タイプintの値を入力ストリームに入れます15      sstream << nValue;
 16 // 先に挿入されたタイプintの値をsstreamから抽出し、それを文字列タイプ17に割り当てます  
               
     
     
     sstream >> strResult;
18   
19      cout << " [cout] strResult is:" << strResult << endl;
20      printf(" [printf] strResult is:%s \ n " 、strResult.c_str());
21   
22は     0を返し ます23 }

上記のコードをコンパイルして実行すると、結果は次のようになります。

2.2複数の文字列の連結

この例では、複数の文字列をstringstreamに格納して、複数の文字列を連結する目的を実現します(実際には、文字列クラスを使用して実現できます)と同時に、stringstreamのemptyメソッドを導入しています。

サンプルコード(stringstream_test2.cpp)は次のとおりです。

1 #include < 文字列 >
 2 #include <sstream>
 3 #include <iostream>
 4   
5  名前空間std を使用 6 7 int main()
 8 {
 9     stringstream sstream;
10 11 // sstreamに12 個の複数の文字文字列を放しますs12 sstream      << " first " << " " << " string、" ;
13      sstream << " 2番目の文字列" ;
  
     
     
 " strResult is:" << sstream.str()<< endl;
15   
16      // 清空sstream 
17      sstream.str("" );
18      sstream << " 3番目の文字列" ;
19      cout << " クリア後​​、strResultは次のようになります:" << sstream.str()<< endl;
20   
21は     0を返し ます22 }

上記のコードをコンパイルして実行すると、結果は次のようになります。

上記のコード実行結果から、次のことがわかります。

  • str()メソッドを使用して、文字列ストリーム型を文字列型に変換できます。
  • 複数の文字列をstringstreamに入れて、文字列連結の目的を達成できます。
  • 文字列ストリームをクリアする場合は、sstream.str( "");メソッドを使用する必要があります。clear()メソッドは、複数のデータ型変換が実行されるシナリオに適しています。詳細については、例2.3を参照してください。

2.3 stringstreamを空にする

文字列ストリームをクリアするには、clear()メソッドとstr( "")メソッドの2つの方法があります。これら2つの方法には、異なる使用シナリオがあります。上記の例では、str( "")メソッドの使用シナリオが紹介されています。ここでは、clear()メソッドの使用シナリオを示します。サンプルコード(stringstream_test3.cpp)は次のとおりです。

1 #include <sstream>
 2 #include <iostream>
 3   
4  ネームスペースstd を使用 ;
 5 6 int main()
 7 {
 8     stringstream sstream;
 9 int first、second;
 10 11 // Insert string 12      sstream << " 456 " ;
 13 // int型に変換14      sstream >> first;
 15      cout << first << endl;
 16 17 // 複数の型変換を実行する前に、まずclear()18を実行する必要があります  
          
     
     
  
     
     sstream.clear();
 19   
20      // bool値を挿入
21      sstream << true ;
 22      // int型に変換
23      sstream >> 秒;
 24      cout <<秒<< endl;
 25   
26      return  0 ;
 27 }

上記のコードをコンパイルして実行すると、結果は次のようになります。

注:この例に含まれるシナリオ(複数のデータ型変換)では、clear()メソッドまたはstr( "")メソッドを使用せずに、clear()メソッドを使用して文字列ストリームをクリアする必要があります。データ型変換の正しい結果を取得できません。 。次の図は、clear()メソッドが使用されておらず、str( "")メソッドが使用されている場合の実行結果を示しています。

 

元のテキストはhttps://blog.csdn.net/liitdar/article/details/82598039から複製されます

おすすめ

転載: www.cnblogs.com/PennyXia/p/12743255.html
おすすめ