Ben*_*oit 386
#include <algorithm>
std::string s = "a_b_c";
size_t n = std::count(s.begin(), s.end(), '_');
Run Code Online (Sandbox Code Playgroud)
sch*_*der 28
伪代码:
count = 0
For each character c in string s
Check if c equals '_'
If yes, increase count
Run Code Online (Sandbox Code Playgroud)
编辑:C++示例代码:
int count_underscores(string s) {
int count = 0;
for (int i = 0; i < s.size(); i++)
if (s[i] == '_') count++;
return count;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是与std::string您一起使用的代码,如果您正在使用char*,请替换s.size()为strlen(s).
还要注意:我能理解你想要"尽可能小"的东西,但我建议你改用这个解决方案.如您所见,您可以使用函数为您封装代码,这样您就不必for每次都写出循环,但只能count_underscores("my_string_")在代码的其余部分中使用.在这里使用高级C++算法肯定是可能的,但我认为这是过度的.
Tam*_*lei 19
具有适当命名变量的老式解决方案.这给了代码一些精神.
#include <cstdio>
int _(char*__){int ___=0;while(*__)___='_'==*__++?___+1:___;return ___;}int main(){char*__="_la_blba_bla__bla___";printf("The string \"%s\" contains %d _ characters\n",__,_(__));}
Run Code Online (Sandbox Code Playgroud)
编辑:大约8年后,看着这个答案,我很惭愧,我做了这件事(尽管我把自己称为一个愚蠢的捅一个低调的问题).这是有毒的,不行.我没有删除帖子; 我正在添加这个道歉,以帮助改变StackOverflow上的氛围.所以OP:我道歉,我希望你尽管我的拖钓得到了正确的功课,像我这样的答案并没有阻止你参与网站.
小智 13
#include <boost/range/algorithm/count.hpp>
std::string str = "a_b_c";
int cnt = boost::count(str, '_');
Run Code Online (Sandbox Code Playgroud)
Nag*_*ppa 13
使用 lambda 函数检查字符是“_”,然后唯一的计数将增加,否则不是有效字符
std::string s = "a_b_c";
size_t count = std::count_if( s.begin(), s.end(), []( char c ){return c =='_';});
std::cout << "The count of numbers: " << count << std::endl;
Run Code Online (Sandbox Code Playgroud)
你的名字...... Lambda版...... :)
using namespace boost::lambda;
std::string s = "a_b_c";
std::cout << std::count_if (s.begin(), s.end(), _1 == '_') << std::endl;
Run Code Online (Sandbox Code Playgroud)
你需要几个包括......我告诉你,这是一个练习......
计算字符串中出现的字符很容易:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s="Sakib Hossain";
int cou=count(s.begin(),s.end(),'a');
cout<<cou;
}
Run Code Online (Sandbox Code Playgroud)