El siguiente código pide al usuario que ingrese una cadena de texto y el carácter que desea buscar, luego, utiliza la función std::tolower para convertir tanto el carácter buscado como el carácter actual (de la cadena de texto) a minúsculas, lo que permite que las letras con y sin acento, salvo excepciones, se consideren iguales al compararlas y contarlas.

Luego, se utiliza un bucle for para recorrer la cadena de texto y contar las veces que aparece el carácter buscado. El resultado del conteo se imprime en la consola del compilador. 

Por ejemplo, si tenemos la cadena de texto: "Codigoc.org tiene decenas de ejemplos de programación en C++". Y le pedimos al programa que cuente las veces que aparece el carácter 'c', nos daría un resultado de 5. Sin embargo, es importante tener en cuenta que las MAYÚSCULAS con acento no se consideran iguales y no se contarán en el resultado (e, é y E serían diferentes que É).

#include <iostream>
#include <string>
#include <cctype>

int main() {
    std::string text;
    char character;
    int count = 0;
    std::cout << "Ingrese una cadena de texto: ";
    std::getline(std::cin, text); // Leer toda la línea de texto, incluyendo espacios
    std::cout << "Ingrese el carácter a buscar: ";
    std::cin >> character;
    character = std::tolower(character); // Convertir el carácter buscado a minúsculas
    for (int i = 0; i < text.length(); i++) {
        char current_char = std::tolower(text[i]); // Convertir el carácter actual a minúsculas
        if (current_char == character) {
            count++;
        }
    }
    std::cout << "El carácter " << character << " se encuentra " << count << " veces en la cadena." << std::endl;
    return 0;
}

El código ha sido probado en Code::Blocks en Windows, por lo que es completamente funcional.

Puedes descargar el código .CPP aquí.

NOTA: Si al correr el programa los acentos o caracteres especiales no se muestran correctamente, puedes usar esta solución: ¿Cómo mostrar acentos y caracteres especiales en programas escritos en C++?