我已经写了一个简单的功能来计数字符串中字符的出现。编译器很好。但是,当我尝试运行它时,它产生了分割故障。
#include <iostream>
using namespace std;
// To count the number of occurences of x in p
// p is a С-style null-terminated string
int count_x(char* p, char x)
{
if (p == nullptr)
{
return 0;
}
// start the counter
int count = 0;
while (p != nullptr)
{
if (*p == x)
{
++count;
}
}
return count;
}
int main(int argc, char const *argv[])
{
char myString[] = "Hello";
cout << count_x(myString, 'l');
return 0;
}
您的代码中有两个错误:
- 您只看过字符串中的第一个字符。
- 零终止字符串的最后一个字符是一个空字符。您正在测试指针本身。
您需要使用std :: string
#include <string>
#include <algorithm>
#include <iostream>
int main()
{
std::string str = "Hello";
std::cout << std::count(str.begin(), str.end(), 'l');
}