字符串流加一个额外的零

stringstream adding an extra zero

本文关键字:一个 字符串      更新时间:2023-10-16

我面临以下代码的问题。

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();
相关文章: