尽管我的函数已被调用,但编译器不输出任何内容

时间:2019-12-01 19:08:32

标签: c++ iterator

我正在尝试创建一个程序来计算字母在字符串中的出现次数,但是尽管肯定调用了函数count(),但以下程序不会输出任何内容。

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int count(const string &s, char c) {
    string::const_iterator i = find(s.begin(), s.end(), c);
    int n = 0;
    while (i != s.end()) {
        ++n;
        i = find(i+1, s.end(), c);
    }
    return n;
}

int main() {
    const string e = "dddddddd";
    char d = 'd';
    count(e, d);
}

2 个答案:

答案 0 :(得分:7)

您应该使用标准输出函数cout输出结果。

std::cout << count(e,d);

返回不输出任何内容。

答案 1 :(得分:1)

您没有看到任何输出,因为您没有对程序进行编码以输出任何内容。您的count()函数具有您忽略的返回值。

更改此行

count(e, d);

为此

cout << count(e, d);

话虽如此,您的count()函数是多余的,因为<algorithm>已经定义了一个std::count()函数,您可以改用它:

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    const std::string e = "dddddddd";
    char d = 'd';
    std::cout << std::count(e.begin(), e.end(), d);
}