問題タブ [getline]

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 投票する
0 に答える
487 参照

c++ - C ++:Mac Xcode 3.2.2、g++4.2の問題。ストリームを使用して外部ファイルから数値を読み取ることができません

重複の可能性:
C ++:Xcode(Mac)の問題の可能性。getline()を使用して外部ファイルから数値を読み取ることができません

私はMacXcode(3.2.2)ユーザーであり、GCC 4.2コンパイラーを使用しており、C ++の経験がかなりなく、コンパイラーについて完全に無知です。

外部ファイルから数値を読み取り、それらをintのベクトルに格納する必要があります。ストリームとgetline()を使用してコードを記述しました。コードをコンパイルでき、エラーなしで実行されますが、出力がありません。ただし、友人(MacおよびGCC 4.2以外のコンパイラ)では機能します。

私はいくつかのグーグルを行い、私の問題に関連する可能性のあるXcode 3.2.1のコンパイラ(gcc、Apple)の問題に関するいくつかの投稿を見つけました(これは、たとえば、getline()を使用したC ++プリント:解放されるポインタが割り当てられていませんでしたXCode。ただし、Xcode 3.2.2を使用しています。提案された修正((1)ターゲット設定ウィンドウまたは(2)インクルードの前のプリプロセッサマクロとしての_GLIBCXX_FULLY_DYNAMIC_STRINGの追加に関連する)を試しましたが、問題はまだ解決されていません。

したがって、現時点で私の問題が何であるかはわかりません。Xcode3.2.1で発生したのと同じコンパイラの問題であるかどうかはわかりませんが、3.2.2では別の修正が必要です。または、コードに他の問題がある場合。

誰かがアドバイスをしてくれるといいですね。アドバイスは単純すぎません。外部ファイルから数値をインポートする別の方法がある場合は、それについて知りたいと思います。また、Macの.txtファイルではなく、.datファイルからデータをインポートできる理由があるかどうかを誰かが知っていますか?

ありがとうございました。

最初の投稿以来、私はwilhelmtellの編集を含めました。

目標:テキストファイルから「結果」と呼ばれるintのベクトルに数値を読み取ります。

1)データファイルtest.datのデータは、最初は次のようになりました。

//テスト

テスト

'1''2''3'

//テキストファイルには、読みたくないがファイルから削除できないラベルとコメントもあります。

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 投票する
1 に答える
1022 参照

c++ - C++: 外部ファイルからのデータの読み取り; ファイルの終わりの前に読み取りを停止するコードの問題

計算を実行するために作成したコードを使用するには、外部テキスト ファイルからデータ (数値と文字列) を読み取り、それらを文字列または int/double のベクトルに格納する必要があります。これを行うためのテンプレート関数を作成しました。CashCow、Howard Hinnant、および wilhelmtell は、以前の問題を親切に解決してくれました。

この関数は ints/double では問題なく動作するようですが、文字列データに問題があります。

ベクトルに入るには外部ファイルの 1 行のデータが必要ですが、関数は複数行を読み取ります。これが私の言いたいことです。これが外部テキスト ファイル (以下) の内容であるとしましょう。


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

'1' '2' '3' // これらの値は 1 つのベクトル (vectorOne) に入る必要があります

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

'4' '5' '6' // これらの値は別のベクトルに入る必要があります

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

'7' '8' '9' // これらの値は別のベクトルに入る必要があります


データ サブセットの識別子/ラベル (vectorOne など) を探す場合、次の行のデータのみを結果ベクトルに入れる必要があります。問題は、識別子/ラベルの下のすべてのデータが結果ベクトルで終わることです。したがって、vectorTwo が必要な場合、結果のベクトルには "4, 5, 6" という要素が含まれているはずです。しかし、代わりに、4 から 9 が含まれています。私のコード (以下) では、次の行だと思いました。

読み取りが改行で停止することを保証します (つまり、データの各行の後)。

何がうまくいかないかについての提案に非常に感謝しています。

コードは次のとおりです(わかりやすくするために、文字列用に構成しました):

ありがとう

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

c++ - C++ では、テキスト ファイルから特定の行を取得し、それを char ベクトルに格納するにはどうすればよいですか?

プログラムでテキスト ファイルを開き、特定の行 (18 行目など) に移動して、その行の各文字を char ベクトルに格納したいと考えています。

私は一般的にプログラミングにかなり慣れていないので、これが最善の方法ではないかもしれませんが、私がやろうとしていることは次のとおりです。

1) 特定の行を取得して文字列に格納する

2) その文字列を char ベクトルに変換します。配列の代わりにベクトルを使用しているので、pushback() を使用して、配列に割り当てる量が多すぎたり少なすぎたりするのではなく、必要な正確なサイズのベクトルを作成できます。

ステップ2は問題なく実行できますが、問題があるのはステップ1です。特定の行に移動するにはどうすればよいですか?

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

c++ - C++ でテキスト ファイルを処理 -- テキスト ファイルから特定の文字列を抽出

私は C++ の初心者です。次のような内容のテキスト ファイルがあります。

ここで、「Systemname」の値、つまり「localtesthost」を抽出したいと思います。

そして、「Systemname localtesthost」を含む行を抽出できますが、文字列「Systemname」を抽出する方法がわかりません。

以下は私のプログラムです。

文字列を抽出する方法を教えてもらえます"localtesthost"か?

どうもありがとう!

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

c++ - getline を使用して情報を抽出し、C++ のデータ型に格納する

これは私が書いた完全ではないコードです。

foo.txt ファイルは次のようになります。

基本的に、数値は x 座標と y 座標です。必要なのは、読みやすいデータ型で数値を抽出し、行列のようにアクセスできるようにすることだけです。[142, 310, 0, 959]、[299, 467, 0, 959]... というように 4 行の 4 つのコンテナーとして格納する必要があります。

find() 関数を試しましたが、それを正しく使用してデータ型に入れる方法がわかりません。

数値のみを抽出し、移動して配列のようにアクセスできるデータ型に格納するにはどうすればよいですか?

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

c++ - C++ Getline の単純なエラー

私はC++が得意ではないことを指摘したいと思います。通常はCを使用しますが、C++の基本を理解するのが良いと思ったので、データをサーバーに送信する必要があり、通常の std::cin >> 変数はできませんスペースへの入力のみを読み取るため、getline について読んでうまく機能していますが、無限ループで何かを行うと、次のようになります。

最初の反復中に画面に表示される二重の Hello like: Hello Hello 入力されている文字列

しかし、1回のループの後、すべてが良好であることを示しています。getline に問題があると確信しています。なぜなら、それを std::cin >> に変更すると、テストのためだけに機能したからです。私の簡単な質問に答えてくれる人はいますか?

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

c++ - C++ 新人 (ストリーム)... 文字列にスペースが含まれるファイルから文字列を読み取る方法 (Tom Smith など)? >> の代わりに getline を使用する際の問題

ファイルから文字列または数値データを読み取り、データを文字列または int/double のベクトルに保存するためのテンプレート関数を作成しました。次に、データを使用して、作成した別のコードで計算を実行します。

これは単純な質問だと思うので、お詫び申し上げます...空白がある文字列データを読み取ることができません...たとえば、名と姓。「トム・スミス」が欲しいときは、「トム」しか出てこない)。グーグルによると、問題は >> であり、代わりに getline を使用する必要があるようです。>> を getline(test,100) に置き換えようとしましたが、「std::basic_istringstream の呼び出しに一致する関数がありません...」というエラーが発生します (エラー: 'std:: の呼び出しに一致する関数がありません)。 basic_ifstream >::getline(double&)')

誰かが私を正してくれたらとてもありがたいです!ストリームについて頭が回らないようです。

これはいくつかのサンプル データと私のコードです。ここで文字列用に構成しました。

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

'Tom Smith' 'Jackie Brown' 'John Doe' // これらの名前はベクトルの要素として終了する必要があります

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

c++ - 別のスレッドからstdinを読み取る

UNIXのコードでp_threadsを使用しています。私のメインプログラムには、2つのスレッドを作成するスレッドノードがあり、そのうちの1つはgetl​​ineを使用して標準入力からの読み取りを行っています。このすべてが正常に機能しています。コード中のある時点を除いて、「標準入力から読み取るスレッドを再起動する」必要があります。そして、私がそれをするとき、私はstdinから何も読むことができません。

私が間違っているかもしれないことの提案???/

ありがとう。

これは私がstdinから読んでいる部分です

0 投票する
4 に答える
222 参照

c - getline を正しく使用しているかどうかを知る必要があります

C で getline() 関数を使用していますが、配列のように複数回使用すると、セグ フォールトが発生し続けます。これが私が書いた方法です:

何か間違ったことを宣言している場合はお知らせください