2017-10-17 8 views
0

私が抱えている問題は、次のループでは、入力ファイル(inSentences)から文を1つずつ読み込み、別のファイルに出力しようとしていることですoutMatch)、特定の単語が含まれている場合。 .at()と.size()以外の文字列関数は使用できません。ファイルからの読み込みと書き込みを伴うループでの問題

問題は、文章を最初に仲介ファイルに出力しようとしていて、抽出演算子を使用して単語を1つずつ取得して単語があるかどうかを調べることです。そうであれば、文をoutMatchファイルに出力します。デバッグ中に、文の変数がすべての文を1つずつ受け取りますが、sentMore変数は常にファイルの最初の文を抽出しているため、残りの文をテストすることはできません。私はこのバグを修正するように見えることはできません。ヘルプは非常に高く評価されます。

P.S.私は本当に正しい答えを出してくれるのではなく、ちょうどいい方向に手がかりをつけてほしい。

outMatch.open("match"); 
outTemp.open("temp"); 

while(getline(inSentences, sentence, '.')){ 

    outTemp << sentence; 
    outTemp.close(); 
    inTemp.open("temp"); 

    while(inTemp >> sentMore){ 

     if(sentMore == word){ 

      cout << sentence << "." << endl; 
      inTemp.close(); 
      sentCount++; 
     } 
    } 
} 
+1

https://stackoverflow.com/questions/20594520/what-exactly-does-stringstream-do) – scohe001

答えて

1

文字列ストリームを使用する必要があります。あなたの問題は、すぐにoutTempを再び開くことがないように見えるので、最初のループの後に、あなたがそれを閉じた後に書き込もうとしています。しかし、ストリングストリームに切り替えることで、これらの問題をすべて回避することができます!

あなたは完全なソリューションを望んでいないので、一例は次のようになります。([文字列ストリーム]を使用「中間のファイル」の代わりに使用するのでは

string line_of_text, word; 
istringstream strm(line_of_text); 
while(strm >> word) { 
    cout << word << ' '; 
} 
+0

これは文字列関数か別のライブラリですか?私は私のプロジェクトのためのガイドラインに従ってこれを使うことができるとは思えず、.atと.size以外の文字列関数を使うことはできません。 –

+0

@KaranveerSinghこれは完全なライブラリです。 '#include ' – scohe001

関連する問題