stringstream添加额外的零

时间:2015-03-19 20:21:03

标签: c++ stringstream

我遇到以下代码的问题。

short int decrypted0[] = {0,2};
string message = "22";
string string0 ="";

for(i=0;i<message.size();i++)
{        
     ss<<decrypted0[i];
     string0+=ss.str();     
}

为什么第二次迭代后string0的值为"002"而不是"02"

我尝试使用VS和Qt,结果相同。

1 个答案:

答案 0 :(得分:2)

std::stringstream::str()不会清空流,它更像是当前内部的快照。清除其内部缓冲区使用ss.str("")

这意味着你的循环在第一次迭代后给出:

    ss.str() == "0"
    string0 == "0"

然后在第二次迭代之后得到:

    ss.str() == "02"
    string0 == "002"

要做的更容易:

    for(i=0;i<message.size();i++)
         ss<<decrypted0[i];
    string0 = ss.str();