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

What is the difference between range based loop and stringstream while extracting characters from a string

考虑一个像 string s = "xyz123" 这样的字符串。

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

和 stringstream 一样

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

他们都给出了相同的解决方案。是否存在两者行为不同的情况? 应该在什么时候使用。

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

除非跳过空格实际上是一个要求,否则第二个版本也是不必要的。既然字符串中内置了用于迭代的方法,为什么还要构造一个新对象来迭代字符串。