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

时间:2013-02-08 16:33:10

标签: c++ string integer converter

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

ostringstream ostr;
while (.....)
{
regnum++;
ostr<<regnum;
grph.addlastname(ostr.str());
}
例如,它将12345传递给函数而不是5,我该怎么办?

2 个答案:

答案 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)