从字符串中提取字符时,基于范围的循环和stringstream有什么区别

问题描述

考虑类似字符串s =“ xyz123”的字符串。

for(char ch : s)
    cout<<ch;

和stringstream之类的

char ch;
stringstream ss(s);
while(ss>>ch) 
    cout<<ch;

它们都提供相同的解决方案。在任何情况下两者的行为都不同吗? 何时应使用它们。

解决方法

第二个将跳过字符串中的任何空格。 >>就是这样。

除非实际上需要跳过空格,否则也不需要第二个版本。当在字符串中内置有用于迭代的方法时,为什么要构造一个仅用于迭代字符串的新对象。