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

输入是长向量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;

最佳答案

如果要重新使用字符串流,还需要通过.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;


可能有更优雅的方法可以做到这一点...

关于c++ - 从 vector 中获取字符串流中的值后不会重置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52808037/

10-12 23:56