我遇到以下代码的问题。
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,结果相同。
答案 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();