-2

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

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

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

4

2 回答 2

5

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

所以:

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

std::to_string尽管如此,对于这个特定问题仍然是更好的解决方案。)

于 2013-02-08T16:39:03.800 回答
0

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

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)

于 2013-02-08T16:41:31.597 回答