問題タブ [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 投票する
2 に答える
234 参照

c++ - 改行付きのistringsteam

さて、文字列 s =" 1 2 3" がある場合、それを読みました

我々はできる :

次のようなテキスト ファイルがあるとします。

テスト
1 100 ミリ秒

テスト
2 200 ミリ秒

テスト
3 300 ミリ秒

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

c++ - QFile を使用して istringstream をバイナリ入力として作成 (libpng 用)

Qt リソースから png を読み取るために libpng を使用しようとしています。問題点: 読み取りを行うクラスには、Qt の依存関係があってはなりません。

最初のステップで、 http://www.piko3d.net/tutorials/libpng-tutorial-loading-png-files-from-streams/#CustomReadを読んで、私はすでに関数を書くことに成功しました

地味な昔ながらのifstreamを渡すことにも成功しました

read_png(..)に変更し、png を正常に読み取らせます。しかし、Qt リソースから (できればプラットフォームに依存しない) istream を取得するにはどうすればよいでしょうか? パフォーマンスは大きな問題ではないので、最初に思いついた

実際、これは、一見すると良さそうに見える iss を生成します。

私は得る

ただし、空白の問題があるようです。為に

収量

後者は機能しますが、前者のバリエーションは最終的に libpng チェック関数png_sig_cmp(..)を導き、私の png を無効として拒否します。私の最初の反射は「バイナリ」についてです。でも:

  1. istringstream iss(std::stringstream::in | std::stringstream::binary); 正しいと感じます。
  2. QIODevice::ReadOnly にはバイナリ パートナーがないようです。

私が見逃したものが見えますか?

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

c++ - 不要な空白のスキップ

これを使用して入力を読み取ります。

入力行は" #text Markup used in this document is compatible with "、引用符なしで次のようになります

私が達成したいのは、コード変数データの後に含まれることです"Markup used in this document is compatible with "

しかし、代わりに、このコードは、Markup空白をスキップしたくないと指定した後でも、単語の後にすべてを無視しますnoskipws

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

c++ - istringstream オブジェクトの再設定

このコードを実行すると:

istreamstream (iss) は、すべての反復で同じままです。(ファイルは、プログラムの開始時にベクトルに読み込まれます。はい、配列に対応するデータがあることを確認しました。)

つまり、次の出力が得られます。

一方、ファイル/ベクターは実際には次のように言っています:

さまざまなトレースを試しましたが、問題を特定できません。ありがとう!

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

c++ - stringteam を使用したメモリ内の範囲外の問題

初めて stringstream を使い始めたばかりで、コンセプトは気に入っていますが、stringstream 関数でメモリ内の範囲外を正確に見つけるのに苦労しています。

私の関数は、たとえば、「N02550 G3 X16.7379 Y51.7040 R0.0115」などの文字列を受け取ります。これは、私の職場の CNC マシンのマシン コードです。X、Z、Y が隣にある文字列を見つけるために、文字列を stringstream に渡します。これらは座標です。次に、浮動小数点数を私の構造体「座標」に保存するために、最初に文字を取り除きます(x、y、zの3つの倍精度があります)。

この 33 行のマシン コードを含むテキスト ファイルを実行すると、私のプログラムは動作します。718 行のマシン コードで実行すると、718 になり、範囲外のメモリでクラッシュします。次に、別の奇妙な部分は、118,000 行のマシン コードを実行すると、約 22,000 行になり、クラッシュすることです。そのため、なぜそれができるのか、何が問題の原因なのかを理解するのに苦労しています。

関数は次のとおりです。

アプリケーション全体を確認したい場合 (アプリケーションは十分に文書化されています)、マシンコードを含む txt ファイルが必要かどうかを尋ねてください。ありがとうございました!

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

c++ - C++ - 標準入力から可変数の整数を n 回取得する

次のプログラムのループが正確に testCount 回実行されない理由がわかりません。それを正しくするのを手伝ってください。

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

c++ - istringstrem クラスでの peek() の動作

peek メソッドに関する多くの質問を見ましたが、私の質問は、ほとんど明白であるにもかかわらず (私が思うに) 興味深いトピックに関するものです。

読み取るバイナリ ファイルがあり、それをプログラム メモリ内で全体として表示し、読み取りを実行するために istringstream オブジェクトを使用することを選択したとします。

たとえば、ストリーム内の特定のバイトの位置を検索している場合、ハードディスクに繰り返しアクセスすると、時間とリソースが無駄になります...

ただし、istringstream オブジェクトを作成すると、最終的な NULL バイトはすべて EOF シグナルとして扱われます。

少なくとも、これは次の短いコードで私に起こったことです:

このコードは g++ 4.9 でも clang 3.5 でも動作しません。その null バイトがビットを設定するためbuffer、一致sampleが見つかる前に内部に null バイトが存在するという仮説では機能しません。eof

だから私の質問は次のとおりです:この種のアプローチはまったく避けるべきですか、それともpeekヌルバイトが「必然的に」ストリームの終わりではないことを教える方法がありますか?

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

c++ - CPP : 文字列ストリームの解析が遅すぎる

私の cpp コードは、スペースで区切られた float 値の 7 MB のテキスト ファイルを読み取る必要があります。文字列値を float 配列に解析するのに約 6 秒かかりますが、これは私のユース ケースには多すぎます。

私はオンラインでチェックしてきましたが、通常、時間がかかるのは物理 IO であると人々は言います。これを解消するために、ファイルを一発で文字列ストリームに読み込み、これを float 解析に使用しています。コード速度の改善はまだありません。より速く実行する方法はありますか?

これが私のコードです(簡単にするために、配列エントリを dummy_f に置き換えました):

編集:

test_cases.txt ファイルへのリンクは次のとおりですhttps://drive.google.com/file/d/0BzHKbgLzf282N0NBamZ1VW5QeFE/view?usp=sharing

このファイルで実行する場合は、内側のループの次元を 128 に変更してください (入力ミス)。

編集:それを機能させる方法を見つけました。dummy_f を文字列として宣言し、stringstream から文字列ワードとして読み取ります。次に、atof を使用して文字列を float に変換しました。かかった時間は0.4秒で、私には十分です。