我有一个接受字符串参数的函数,并且我有一个整数变量,然后我应该将其转换为字符串,然后将其传递给我使用此代码的函数,但由于 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,第一次运行时,它会在 ostr 中添加 '1',第二次,因为它是相同的“ostringstream”变量,它会添加 '2',所以你的字符串将是 '12 ' 现在...
解决方案:在您的 while 中声明 ostringstream ostr,使用 std::to_string,或者每次 while 结束时执行 ostr.clear()。(最好的方式是在你的 while 中声明你的 ostr)