問題タブ [stringstream]
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.
c++ - stringstream とフランス語のロケール (French_France.1252)
このコードは 1000 を文字列 "1 000" に変換しますが、value_french[1] の値は 32 ではなく -96 です。なぜですか?
私が行った場合
value_french[1] の値は 32 です。エラーは char の符号に関連しているようですが、変換を行うときに空白にのみ影響するのはなぜですか?
c++ - 「上書き」中の Stringstream write() の問題
現在、私はと呼ばれる文字列ストリームを持っていData
ます。次を使用して、文字列ストリームの先頭を探しています。
次に、stringstream の最初の 8 バイトに 2 つの整数を書き込んでみます (以前は、最初の 8 バイトは 0 に設定されていました)。
dataLength
Visual C++ デバッガーを使用してブレークポイントを設定すると、それが 12 と 0 に等しいことがわかりますdataFlags
。したがって、それぞれ 12 と 0 を書き込む必要があります。
2つの整数を書き込んだ後、効果がないように見えました。次に、次のコードを使用して stringstream データを出力します。
最初の 12 バイトを 2 つの整数 (最初の整数 != 0) で上書きしたにもかかわらず、データの最初の 8 バイトがまだ 0 であることがわかります。
stringstream のデータが正しく上書きされないのはなぜですか?
c++ - stringstream は内部でどのように機能しますか?
私はパフォーマンスの文脈で尋ねています。stringstream は単なる文字列/ベクトルなので、それに書き込むと、コンテンツ全体がより大きなメモリのチャンクにコピーされる可能性がありますか、それともよりトリッキーな方法 (たとえば、文字列のリストなど) で行われますか?
c++ - バッファなしでfstreamからstringstreamにデータをコピーしますか?
fstream
(ファイル)からstringstream
(メモリ内のストリーム)にデータを転送できる方法はありますか?
現在、私はバッファを使用していますが、データをバッファにコピーし、次にバッファを文字列ストリームにコピーする必要があるため、これには2倍のメモリが必要です。バッファを削除するまで、データはメモリに複製されます。
中間バッファを使用せずにファイル全体を文字列ストリームに書き込む方法を知っている人はいますか?
c++ - ファイルからのトークンの読み取り(複雑)
基本的なトークン化構造/アルゴリズムが用意されています。それはかなり複雑で、私のデザインの「欠陥」についてあなたに啓蒙するのに十分簡単にそれを明確にできることを願っています。
クラスParserState
この設定の理由は、構文エラーが発生した場合に行番号を報告できるようにするためです。パーサーのフェーズ/状態に応じて、私のプログラムではさまざまなことが起こり、このParserStateのサブクラスはとを使用m_token
しnextToken
て続行します。 が空の場合はをfetchToken
呼び出し、引数に次のトークンを配置します。nextLine
m_buffer
問題は、m_bufferから削除されたトークンが削除されず、を呼び出すたびに同じトークンが読み取られることnextToken()
です。問題は、それm_buffer
を変更できることです。したがって、istringstream::str
ループ内での呼び出しです。しかし、これが私の問題の原因であり、私が見る限り、それを回避することはできません。したがって、私の質問:stream >> token
文字列ストリームによって内部的にポイントされた文字列から何かを削除するにはどうすればよいですか?おそらく私はを使用する必要はありませんstringstream
が、この状況ではもっと基本的なもの(最初の空白を見つけて文字列から最初のトークンを切り取るなど)ですか?
10億ありがとう!
PS:行番号を追跡できる限り、関数/クラス構造を変更する提案は問題ありません(したがって、完全なファイルが読み込まれm_buffer
ず、クラスメンバーistringstream
があります。これは、行番号エラーの報告が必要になる前のことです)。
c++ - stringstream の内容を char* を引数として関数に渡す
ppmファイル(画像形式)をディスクに書き込む機能があります。ファイル名を char* 配列として受け取ります。メイン関数では、stringstream と << 演算子を使用してファイル名をまとめました。次に、この結果を ppm 関数に渡します。私はこれが他の場所で議論されているのを見たことがあります.
私が行ったことは以下のコードに示されています。他の人が一時変数を使用して多くのステップで通常行うトリッキーな部分は(char*) (PPM_file_name.str().data())
. これにより、.str() を使用して stringstream PPM_file_name から文字列を抽出し、.data() を使用して実際のコンテンツへのポインターを取得し (これは const char*)、それを通常の (char*) にキャストします。以下のより完全な例。
これまでのところ、次の方法で問題なく動作することがわかりましたが、他の人が一見複雑な方法で何かを行った場合、それはより安全な方法であるため、通常は不安になります. それで、私がここでやっていることは安全で、移植性が高いかどうか誰か教えてもらえますか?
ありがとう。
c++ - stringstreamから値を入力する
文字列ストリームのすべての値をデータ型に入力できるwhileループはありますか?例えば:
c++ - stringstreamからの値を無視します(sscanfの%* fなど)
sscanf()を含む古い安全でないC関数を取り除こうとしています。今使っています
そこからの整数が必要です。それらの厄介なダミー変数を回避する方法はありますか?
よろしくお願いします。良い一日を!
c++ - std::stringからNULLを削除します
std :: ostream operator <<の独自の実装を持つサードパーティのコードを使用して、サードパーティの型を処理しています。私はこの出力にstringstreamを使用しています-次のように:
この構造体には、NULLに設定されているポインターメンバーが含まれています。演算子<<とstr()
文字列への割り当てを使用すると、(gdb-を介してprint str
)先頭に「\ 000」文字が多数あり、次に必要な文字列データがあることがわかります。
空ではなく実際のデータのみを取得するために、これらのNULLをトリミングするにはどうすればよいですか?
PS正確なコードはWindowsVC++で正常に機能します...
ありがとうございました。
c++ - C++で一時変数なしでistreamから文字列ストリームに1行を読み取りますか?
C++で一時文字列変数を使用せずに、入力ストリームから1行を読み取って文字列ストリームに渡すことは可能ですか?
私は現在、次のように読み取りを行っています(ただし、一時変数は好きではありませんline
):