我正在尝试构建一个程序,可以在字符串中找到某个字符的顺序 这是我做的代码:
#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)
任何人都可以提供帮助吗?
答案 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就像这样:
答案 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; }