stringstream 添加一个额外的零

stringstream adding an extra zero

我遇到了以下代码的问题。

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,结果相同。

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();