1. ホーム
  2. c++

[解決済み] ストリングストリームって何するもの?

2022-08-16 02:18:17

質問

昨日からC++を勉強しようとしていて、このドキュメントを利用しています。 http://www.cplusplus.com/files/tutorial.pdf (32ページ). このドキュメントの中にあるコードを見つけ、実行しました。値段に5.5ルピー、数量に整数を入力してみましたが、出力は0でした。 5.5と6を入力してみたところ、出力は正しくなりました。

// stringstreams
#include <iostream> 
#include <string> 
#include <sstream> 

using namespace std; 

int main () 
{ 
  string mystr; 
  float price = 0; 
  int quantity = 0; 

  cout << "Enter price: "; 
  getline (cin,mystr); 
  stringstream(mystr) >> price; 
  cout << "Enter quantity: "; 
  getline (cin,mystr); 
  stringstream(mystr) >> quantity; 
  cout << "Total price: " << price*quantity << endl; 
  return 0; 
}

質問です。mystringコマンドは具体的に何をするのですか?ドキュメントから引用します。

"この例では、標準入力から間接的に数値を取得します。 を間接的に取得します。標準入力から直接数値を抽出するのではなく 標準入力から直接数値を取り出すのではなく、標準入力(cin)から行を取得して 文字列オブジェクト(mystr)に取り込み、この文字列から整数値を取り出して この文字列から整数値をint(量)型の変数に抽出します。

私の印象では、この関数は文字列の整数部分を受け取り、それを入力として使用するのではないかと思いました。

(ここでどう質問していいのかよくわからないのですが。私もプログラミングは初めてです) ありがとうございます。

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

文字列と他の数値型との変換にstringstreamを使うと非常に便利なことがあります。このような場合 stringstream の使い方と似ています。 iostream の使い方に似ているので、覚える負担はありません。

Stringstreamsは、文字列の読み込みと文字列へのデータの書き込みの両方に使用することができます。主に文字列バッファで機能しますが、実際のI/Oチャンネルはありません。

stringstreamクラスの基本的なメンバー関数は以下の通りです。

  • str() であり、バッファの内容を文字列で返します。

  • str(string) で、バッファの内容を引数の文字列に設定します。

文字列ストリームの使用例です。

ostringstream os;
os << "dec: " << 15 << " hex: " << std::hex << 15 << endl;
cout << os.str() << endl;

結果は dec: 15 hex: f .

istringstream は多かれ少なかれ同じような使い方をします。

要約すると、stringstreamは以下のような便利な方法です。 文字列を独立したI/Oデバイスのように操作する .

参考までに、クラス間の継承関係は。