2011-02-12 61 views
2

你能告诉我,为什么这是错的?stringstream到数组

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

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

当我看试阵 - 只有第一个 - 试验[0] - 有正确的值 - 每一个其他测试[1..X]的值为0 为什么它的错,而不是加工?在循环的第一次运行中,stringstream将正确的值设置为数组,但稍后只有0?

感谢

回答

3

尝试result.clear()result.str("")冲洗之前,荷兰国际集团的stringstream的。这会在输出缓冲区后将其设置为再次接受输入的状态。

#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] == 0test[1] == 1