0

こんにちは私は次のコードに問題があります:

 int skp = 1;
    do{
    file.seekp(skp);
    file>>s;
    cout<<s;
    stats[s]++;
    skp++;
    skp++;
    }while(skp <= 10);

テキストファイルには次のものがあります:0

1

2

3

0

1

0

1

0

このプログラミングで実行したいのは、2番目の数値を読み取ることから始めて、次に1つの読み取りをスキップし、次の読み取りをスキップするなどです。実行しているのは、適切な2番目の数値を読み取ってから、もう一度読み取ります。 2回、次に次の番号を3回、次の番号を3回読み取ります。したがって、上記のテキストファイルから受け取る出力は1112223330です。

誰か助けてくれませんか!ありがとうございました!

4

1 に答える 1

0

これは、ラインがラインフィード(実際にはCRとLF)で区切られているためです。また、file >> s先頭の空白をスキップするので、

 <CR><LF>1 
 <LF>1
 1

これらはすべてs1になります。

同じことが2、3などにも繰り返されます。

yout seekp()を忘れて、単に使用してください

while (file.good()) {
 file >> s; // skip line
 if (!file.good()) break;
 file >> s;
 cout << s;
 stats[s]++;
} 
于 2011-01-26T21:49:11.187 に答える