1

我正在尝试查找字符串中 i 的数量。这是我的代码:

string str = "CS445isaninterestingcourse";

int num = 0;

for (int i = 0; i < str.length(); i++)
{
    if (str.substr(i, i + 1) == 'i')
        num++;
}

但我得到错误。任何人都可以帮忙吗?

谢谢。

4

4 回答 4

7

由于问题明确提到了 C++:

#include <iostream>
#include <algorithm>

int main(int argc, const char * argv[])
{
   std::string str = "CS445isaninterestingcourse"; 
   size_t i = std::count(str.begin(), str.end(), 'i');
   std::cout << "Number of i's:" << i << "\n";
   return 0;
}
于 2013-04-28T02:54:41.593 回答
4

substr 方法返回一个字符串。您正在尝试将字符串与 char 进行比较,这是无效的。只需将“i”更改为“i”即可。另外,你应该说 str.substr(i,1) 而不是 str.substr(i,i+1)。你可以试试这个:

string str="CS445isaninterestingcourse";

int num=0;

for(int i=0; i<str.length();i++)
{
    if(str.substr(i,1)=="i")
        num++;
}

或者等效地,你可以说

if(str.at(i)=='i')
于 2013-04-28T02:27:37.723 回答
3

使用std::count. 这就是它的用途:

int num = std::count(std::begin(str), std::end(str), 'i');
于 2013-04-28T02:51:45.647 回答
0

您还可以使用添加到 C++11 标准中的正则表达式内容。见http://www.cplusplus.com/reference/regex/

于 2013-04-28T02:42:36.530 回答