如何指向字符串中的最后一个字母?

时间:2014-03-18 10:10:17

标签: c++

我正在尝试构建一个程序,可以在字符串中找到某个字符的顺序 这是我做的代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string word="banana";
    cout << "a = ";
    const char *pad = "";
    for (size_t i = 0; i < word.size(); i++)
    {
        if (word[i] == 'a')
        {
            cout << pad << (i + 1);
            pad = ", ";
        }
    } 
    cout << "\n";
    return 0; }

并且它工作得很好,唯一的问题是我希望它只打印出最后一个订单..为了更清晰: 而不是在最后一个例子中打印出来(a = 2,4,6)我希望它打印出来(a = 6)

任何人都可以提供帮助吗?

4 个答案:

答案 0 :(得分:4)

它已作为std::string的{​​{3}}和the find_last_of方法实施。

我建议使用其中一种方法,但是如果你仍然想要实现自己,你必须颠倒顺序从头开始而不是开始,我认为你正在寻找the rfind停止循环:

for (size_t i = word.size() - 1; i >= 0; --i)
{
  if (word[i] == 'a')
  {
    cout << pad << (i + 1);
    break;
  }
} 

Break就像这样:

the break statement

答案 1 :(得分:3)

反转循环

for (size_t i = word.size()-1; i >= 0; i--) {
   ...

如果不是为了学习循环,使用其他答案中提出的标准函数是正确的方法。

答案 2 :(得分:2)

您可以使用std::string::rfind获取某个字符最后一次出现的索引:

#include <string>
#include <iostream>

int main()
{
    std::string s = "banana";
    std::string::size_type pos = s.rfind( 'a' );
    if ( pos == std::string::npos ) {
        std::cout << "letter not found\n";
    } else {
        std::cout << "letter found at position " << pos + 1 << "\n";
    }
}

答案 3 :(得分:2)

我能想到的最简单的方法是使用stl字符串find_Last_of函数。以下是一个小例子:

#include <iostream>
#include <string>
using namespace std;
int main()
{
string word="banana";
int pos = word.find_last_of("a");
cout << "Last occurrence of the letter a is at position " << pos+1 << " array position " << pos <<endl ;
return 0; }