知道循环中std :: string的结束

时间:2014-03-01 23:05:07

标签: c++ string c++11 std

我想知道如何知道循环中std :: string的结束?

例如:

while(string.eof()) {}

记住它与std :: string

有关

谢谢大家。

3 个答案:

答案 0 :(得分:8)

您可以循环遍历标准库容器上的字符串:

for (auto c : s)
{
  // do something with c
}

for (auto it = s.begin(), end = s.end(); it != end; ++it)
{
  // do something with it
}

其中s是字符串。

答案 1 :(得分:1)

你可以使用迭代器

string str="abcd";
string::iterator it=str.rbegin();//iterator pointing on d

如果你想在你可以做的最后一个角色之前做一些事情

for (string::iterator it2=str.begin(); it"!=str.rbegin();++it){
   cout<<"Inside the string but not the last character\n";
}

答案 2 :(得分:1)

  

“我不想与字符串交互,只想要一个循环   字符串的结尾没有来。“

字符串实际上是一个容器(特定数组),而不是文件。它不支持任何状态,也没有eof之类的任何方法。所以你不能这样做。

如果您有通常的数组char buf[SZ];那么'数组的末尾不会'到来? 懵了。数组索引可以指向最后一个元素,上面显示的字符串迭代器也是如此。