将integer转换为函数参数的字符串



我有一个函数,它接受一个字符串参数,并且有一个整数变量,然后我应该将其转换为字符串,然后将其传递给我使用此代码的函数,但由于ostringstream用于I/O,所以它不起作用。

ostringstream ostr;
while (.....)
{
regnum++;
ostr<<regnum;
grph.addlastname(ostr.str());
}

例如,它将12345传递给函数而不是5,我该怎么办?

这是真的-有很多类似的问题可以解决"最好的方法是什么?"但我认为,在回答"为什么这不起作用?"的问题时,OP需要学习一些东西

因此:

您的stringstream有一个内部状态,在循环过程中,您总是附加一个新的数字,但以前的数字仍在流中!您可以通过使stringstream作用域成为循环的本地作用域来解决此问题,即在循环内而不是在循环外声明它

(不过,std::to_string仍然是解决这个特定问题的更好方案。)

除了一件事,一切都很好,参见:

ostringstream ostr;
 while (.....)
{
 regnum++;
 ostr<<regnum;
 grph.addlastname(ostr.str());
}

你在while之外声明你的ostr,while第一次运行时,它会向ostr添加"1",第二次,因为它是同一个"ostringstream"变量,它会添加"2",所以你的字符串现在将是"12"。。。

解决方案:声明ostringstream-ostr,在while中,使用std::to_string,或者每次while结束时执行ostr.clear()。(最好的方法是在你的时间内声明你的ostr)

相关内容

  • 没有找到相关文章

最新更新