-1

重複の可能性:
ループ条件内の iostream::eof が間違っていると見なされるのはなぜですか?

このコードを使用して、最初の " を `` に置き換え、2 番目のコードを '' に置き換えました

#include <fstream>
#include <iostream>
using namespace std ;
void main ()
{
    ifstream infile;
    infile.open("infile.txt");
    ofstream outfile;
    outfile.open("outfile.txt");
    char c ;

    int i = 0 ;
    while ( !infile.eof() )
    { 
        infile.get(c)
            if (c=='\"')
            {
                i++ ;
                if (i%2==0)
                    outfile<<"\'\'";
                else 
                    outfile<<"``";
            }
            else 
                outfile<<c;
    }
    outfile.close();
    infile.close();
}
4

1 に答える 1

4

しないでくださいwhile ( !infile.eof() )- これは、前の読み取りがファイルの最後に到達したかどうかのみをチェックし、次の読み取りが終了するかどうかはチェックしません。そのため、最後の文字が読み取られると、再びループし、まだファイルの終わりに達していないことを確認し、読み取る別の文字がない場合でも、別の文字の読み取りに進みます。前回cの反復と同じ値になります。

代わりに、次のようにします。

while (infile.get(c))
{
  // ... 
}

これにより、ファイルから文字が読み取られ、それが成功した場合、その文字で何かが実行されます。

于 2013-01-29T18:41:42.050 に答える