我想知道如何知道循环中std :: string的结尾?知道循环中的std :: string的结尾
例如:
while(string.eof()) {}
记住,它是用的std :: string
谢谢大家。
我想知道如何知道循环中std :: string的结尾?知道循环中的std :: string的结尾
例如:
while(string.eof()) {}
记住,它是用的std :: string
谢谢大家。
你也可以遍历了一个标准库容器像你循环一个字符串:
for (auto c : s)
{
// do something with c
}
或
for (auto it = s.begin(), end = s.end(); it != end; ++it)
{
// do something with it
}
其中s
是字符串。
@ SH.0x90:这甚至不是一个有意义的句子...... –
@ SH.0x90好的,不要在循环中使用'c'或'it'。 – juanchopanza
你可以为像我这样认为迭代器破坏性能的偏执狂人士添加整数:D;注意:把iter.end()拉入变量,编译器应该这样做,但你永远不知道 – Creris
可以使用迭代器
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";
}
“我不想与互动字符串,只需要一个循环,而字符串 的末尾不会出现。“
真的是字符串是一个容器(特定数组),而不是文件。它不支持任何状态,并且不具有像eof
这样的任何方法。所以你不能这样做。
如果你有一个普通的数组char buf[SZ];
那么'数组的末尾没有来'是什么? 毫无意义。数组索引可以指向最后一个元素,上面显示的字符串迭代器也是如此。
是的,我明白。看到上面的答案,我意识到我需要使用迭代器来操纵并以某种方式“知道”字符串的结尾。谢谢。 –
使用'str.begin()'和'str.end()'。 – 0x499602D2
请注意''while(!eof())'通常被错误地使用。 – chris