首页 > 解决方案 > 从字符串中提取字符时,基于范围的循环和字符串流有什么区别

问题描述

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

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

和字符串流一样

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

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

标签: c++c++17stringstreamrange-based-loop

解决方案


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

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


推荐阅读