поток строк в массив - PullRequest
       5

поток строк в массив

2 голосов
/ 12 февраля 2011

не могли бы вы сказать мне, почему это не так?

У меня есть

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] - имеет правильное значение - каждый второй тест [1..x] имеет значение 0 почему это неправильно и не работает? при первом запуске цикла stringstream устанавливает правильное значение для массива, но позже появляется только 0?

спасибо

1 Ответ

3 голосов
/ 12 февраля 2011

Попробуйте result.clear() записать поток строк, прежде чем очищать его с помощью 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] == 0 и test[1] == -832551553 /*some random number*/clear я получаю ожидаемый результат test[0] == 0 и test[1] == 1.

...