从字符串中提取字符时,基于范围的循环和字符串流有什么区别
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;
他们都给出了相同的解决方案。是否存在两者行为不同的情况?
应该在什么时候使用。
第二个将跳过字符串中的任何空格。这就是 >>
的工作原理。
除非跳过空格实际上是一个要求,否则第二个版本也是不必要的。既然字符串中内置了用于迭代的方法,为什么还要构造一个新对象来迭代字符串。
考虑一个像 string s = "xyz123" 这样的字符串。
for(char ch : s)
cout<<ch;
和 stringstream 一样
char ch;
stringstream ss(s);
while(ss>>ch)
cout<<ch;
他们都给出了相同的解决方案。是否存在两者行为不同的情况? 应该在什么时候使用。
第二个将跳过字符串中的任何空格。这就是 >>
的工作原理。
除非跳过空格实际上是一个要求,否则第二个版本也是不必要的。既然字符串中内置了用于迭代的方法,为什么还要构造一个新对象来迭代字符串。