我有一个接受字符串参数的函数,我有一个整数变量然后我应该将它转换为字符串,然后将其传递给该函数我使用此代码但是因为ostringstream用于I / O它不起作用。
ostringstream ostr;
while (.....)
{
regnum++;
ostr<<regnum;
grph.addlastname(ostr.str());
}
例如,它将12345传递给函数而不是5,我该怎么办?
答案 0 :(得分:5)
这是真的 - 有很多类似的问题可以解决“最好的方法是什么?”但是我认为在回答“为什么这不起作用?”这个问题的答案时,OP需要学习一些东西。
因此:
你的stringstream
有一个内部状态,在你的循环中你总是追加一个新数字 - 但之前的数字仍在流中!你可以通过在循环中使stringstream
范围 - 局部来解决这个问题,即在循环内而不是在循环内声明它。
(std::to_string
仍然是针对这一特定问题的更好解决方案。)
答案 1 :(得分:0)
除了一件事,一切都很好, 见:
ostringstream ostr;
while (.....)
{
regnum++;
ostr<<regnum;
grph.addlastname(ostr.str());
}
你在一段时间内声明你的ostr,第一次运行时,它第二次向ostr添加'1',因为它是相同的“ostringstream”变量,它添加'2',所以你的字符串将现在是'12'......
解决方案:在你的while内部声明ostringstream ostr,使用std :: to_string,或者每次while结束时都执行ostr.clear()。 (最好的方式是在你的内部声明你的ostr)