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();
我遇到了以下代码的问题。
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();