問題タブ [istringstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2419 参照

c++ - operator>> は int 16 進数と 10 進数を読み取ることができますか?

operator>>C++ でhex値 AND と値の両方を読み取るように説得できdecimalますか? 次のプログラムは、16 進数の読み取りがどのようにうまくいかないかを示しています。と の両方を同じistringstreamように読めるようにしたいです。hexdecimal

0 投票する
1 に答える
765 参照

c++ - 文字列ストリームistringstreamのC++の問題

次の形式のファイルを読んでいます

項目は次のとおりです。ローンID、元本、月、利率。

入力文字列ストリームで何が間違っているのかわかりませんが、ローンIDのみが正しく読み取られるため、値を正しく読み取っていません。他のすべてはゼロです。申し訳ありませんが、これは宿題ですが、私のエラーを特定するのを手伝ってくれるかどうか知りたかっただけです。

0 投票する
2 に答える
14246 参照

c++ - C++-istringstreamを繰り返し使用する

「3.34|2.3409 | 1.0001 | ... |1.1|」のように格納された行にフロート番号を持つファイルを読み取るためのコードがあります。istringstreamを使用して読みたいのですが、期待どおりに機能しません。

マークされたポイントでは、行は最初にのみ別のストリームにコピーされます。次の反復では機能せず、何もしません。すべての反復で新しいistringstreamオブジェクトを作成しなくても、より多くの回数使用できると期待していました。

0 投票する
1 に答える
784 参照

c++ - テンプレート化された関数で istream から bool を抽出する

フィールド クラスの読み取り関数を 1 つのテンプレート関数に変換しています。と のフィールド クラスがint, unsigned int, long,ありunsigned longます。これらはすべて、から値を抽出するために同じ方法を使用しますistringstream(型のみが変わります)。

トリッキーな部分はbool(ブール) 型にあります。
0, 1, T, F, TRUE, FALSEBoolean:には多くのテキスト表現があり、大文字と小文字を区別しないすべての組み合わせがあります

質問は次のとおりです。

  1. C++ 標準ではbool、ストリーム抽出演算子を使用して a を抽出するための有効なデータとは何ですか?
  2. Boolean はテキストで表すことができるので、これにはlocales が含まれますか?
  3. これはプラットフォームに依存しますか?

入力用の独自のハンドラーを作成しないことで、コードを簡素化したいと考えていboolます。

MS Visual Studio 2008 (バージョン 9)、C++、および Windows XP と Vista を使用しています。

0 投票する
5 に答える
4044 参照

c++ - 非コピー istringstream

したがってistringstream、初期化時に文字列の内容をコピーします。

ものをコピーせずにstd::istringstream、指定されたをバッファーとして使用する方法があるかどうか疑問に思っていました。このように、引数として取る関数c_strに渡す前に大量のメモリをコピーする必要はありません。std::istringstream&istream&

私がやろうとしているのは、std::ifstream&引数を取るだけのいくつかの関数 (それらはほとんどパーサーです) をistream&同様に取るように変換することです。このために独自のistreamサブクラスを作成する必要がありますか?

0 投票する
8 に答える
80964 参照

c++ - istringstream、ostringstream、stringstreamの違いは何ですか?/すべての場合にstringstreamを使用してみませんか?

いつ使用しますか。またstd::istringstream、すべてのシナリオで使用する必要がないのはなぜですか(実行時のパフォーマンスの問題はありますか?)。std::ostringstreamstd::stringstreamstd::stringstream

最後に、これについて何か悪いことはありますか(ストリームを使用する代わりに):

0 投票する
1 に答える
346 参照

c++ - C++: getline() を使用した外部ファイルからの読み取りに関するフォローアップの質問。ファイル データのサブセットを取得する方法は?

外部ファイルから数値を読み取り、int のベクトルに格納する必要があります。Howard Hinnant と wilhelmtell のおかげで、今ではこれを行うことができます。

追加機能をコードに組み込む方法を見つけようとしてきましたが、ストリームに関する知識を使い果たしたので、アドバイスをいただければ幸いです。

多くのデータセットを含むファイルを処理できるようにしたい。ファイルから特定のデータのみをベクターに抽出することはできますか? ファイルのさまざまな部分からのデータを含むいくつかのベクトルを作成したいと考えています。私はオンラインで検索しましたが、これに関する言及は見当たりませんでした。

これがコードと、データを取得するファイルの例です (「テスト」と呼びましょう)。


編集: CashCow のアドバイスに基づいてコードを編集しました。これで、データ ファイルからブロックを取得できます。しかし、必要なブロックを取得する方法がわかりません。コードをそのまま実行すると、要素 2、5、8 を含むベクトルが得られます (これは私が望んでいるものではありません)。vectorTwo (作成した例では 4,5,6) を取得するために、while ステートメントの周りにこれを追加してみました。

それは動かなかった。コードを実行しても結果は得られませんでした (ただし、コンパイルされました)。誰が問題が何であるかを見ることができますか? このステートメントを使用して、必要なデータ ブロックのヘッダーを検索できると考えました。


//サンプルファイルの内容はこちら

vectorOne // 1 つのベクトルのデータのサブセットの識別子

'1' '2' '3'

vectorTwo // この 1 つのベクトルを取得するにはどうすればよいでしょうか? または他の 1 つのベクトルですか?

「4」「5」「6」

vectorThree // 別のベクトルのデータのサブセットの識別子

'7' '8' '9'

// コード: '\'' 文字は行区切り文字です。最初の ' まではすべて無視され、次の ' まではすべて数値の一部です。これは、ロジックが失敗する (ファイルの終わり) まで続きます。代わりに、データブロックの最後で停止するにはどうすればよいですか?

0 投票する
2 に答える
33996 参照

c++ - C++でistringstreamを使用して文字列を整数に分割する

istringstream単純な文字列を一連の整数に分割するために使用しようとしています。

そして私は得る:

最後の要素が常に2回出てくるのはなぜですか?それを修正する方法は?

0 投票する
3 に答える
1347 参照

c++ - ループ内の C++ istringstream がその値を変更しない

私はC ++にかなり慣れていないので、単独で検索しても解決策が見つからないという問題に遭遇しました。

問題は、以下のループ内で istringstream の値が変更されないのはなぜですか?

dirs[ 0 ] と dirs[ 1 ] から値を取得し、それらを増加する int i に変更することはありません。ところで。dirs[ i ] と dirs [ i + 1 ] の値は 16 進数値として格納されます (例: 0F9C8924)。

以下は私の最新のセットアップです。他の方法をいくつか試しましたが、成功しませんでした。たとえば、ループ内に istringstream を持ち、ios_base::trunc などを使用しています。

またdirs[ i ]、DO には異なる値があり、正しく読み取られますが、istringstream を介して文字列 hex を unsigned int にしようとすると、新しい値が取得されません。

countdirsはグローバル変数でありcount、別の関数で増加します。その値のカウントは ですdirs

これが以前に尋ねられた場合は申し訳ありませんが、私が見つけた解決策はうまくいきませんでした。ss.clear()またはなどwhile( ss >> f )

提供されたヘルプに事前に感謝します。

0 投票する
3 に答える
4244 参照

c++ - char[]でスペースで区切られた2つの整数を取得するには?

このような数字の文字列を取得します。

スペースで区切られた 2 つの整数。

出力は 57 になります。

使ってみましたが、

しかし、実行するたびに、a だけが正しく、b は正しくありません。

他にどのような機能がありますか? それとも、これは私が抱えているコーディングの問題ですか?

回答にはすでに2種類の提案があります。

ありがとうございました。追加の方法は非常に高く評価されます。