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次,然后读下一个数字3次,下一个数字3次。所以我从上面的文本文件收到的输出是 1112223330。

任何人都可以帮助我吗?谢谢!

4

1 回答 1

0

那是因为您的行由换行符分隔(实际上是 CR 和 LF)。此外,file >> s将跳过前导空格,因此您最终会得到

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

所有这些都导致s为 1。

对 2、3 等重复相同的操作。

忘记你的 seekp() 并简单地使用

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