从向量中获取字符串流中的值后不会重置

时间:2018-10-14 23:38:50

标签: c++

我正在尝试获取向量的值,并在每个数字后用感叹号将它们并排列出。

输入是长向量v = {3,5,6,7};。

我希望输出为3! 4! 5! 6! 7!

我当前的输出是3! 34! 345! 3456! 34567!

string final_word = "", single_word; stringstream convert;
for (long i : v) {
  convert << i;
  single_word = convert.str();
  final_word += single_word;
  final_word += "! ";
  single_word = "";
  convert.clear();
return final_word;

1 个答案:

答案 0 :(得分:2)

如果要重新使用字符串流,还需要通过.str("").clear()将其内容设置为空白。

但是,等到循环完成之后再提取流内容会更简单:

for (long i : v)
    convert << i << "! ";

return convert.str();

如果您关心尾随空格,可以添加一些代码以删除尾随空格,例如:

auto final_word = convert.str();
if ( !final_word.empty() )
    final_word.resize( final_word.size() - 1 );
return final_word;

可能有更优雅的方法...