3

教えてもらえますか、なぜこれが間違っているのですか?

私は持っています

mytype test[2];
stringsstream result;
int value;

for (int i=0; i<2; i++) {
   result.str("");
   (some calculating);
   result<< value;
   result>> test[i];
}

配列をテストするのを見ると-最初だけ-test[0]-正しい値を持っています-他のすべてのtest[1..x]は値0を持っていますなぜそれが間違っていて機能しないのですか?サイクルの最初の実行では、stringstreamは正しい値を配列に設定しましたが、後で0しかありませんか?

ありがとう

4

1 に答える 1

4

result.clear()でフラッシュする前に、stringstreamを試してみてくださいresult.str("")。これにより、バッファを出力した後、再び入力を受け入れる状態になります。

#include <sstream>
using namespace std;

int main(){
    int test[2];
    stringstream result;
    int value;

    for (int i=0; i<2; i++) {
        result.clear();
        result.str("");
        value = i;
        result<< value;
        result>> test[i];
    }

    return 0;
}

クリアせずに取得test[0] == 0test[1] == -832551553 /*some random number*/ます。とclearの期待される出力を取得しtest[0] == 0ますtest[1] == 1

于 2011-02-12T11:30:06.907 に答える