Duda con C++

Buenas. Estoy haciendo un programa que me compruebe si cada 40 palabras en un fichero hay signos de puntuación. El caso es que sé hacer solo con puntos mediante la siguiente función:

ifstream fichero;
int i=0; //Contador de palabras
bool x=true;


string dat;
fichero.open("texto.txt");




while (fichero >> dat && x==true)
{
if (dat == ".")
{
cout << "Encontrado un signo de puntuacion. " << endl;
i=0;

}
else
{
i++;
if (i==40)
{
cout << "No hay signos de puntuacion en 40 palabras." << endl;
x=false;
}
}
}

if (i<40)
cout << "El documento esta escrito correctamente" << endl;
fichero.close();


Lo que está remarcado en negrita hace que compruebe si hay puntos. Sin usar if anidados, ¿como podría decirle que además de puntos, puede haber comas o puntos y comas? Es decir, el operador o lógico .

Gracias por la ayuda, y perdón por una pregunta que se me antoja fácil. Ser novato es lo que tiene [tomaaa]
if (dat == "." || dat == "," || dat == ";")
EDITO:
Al parecer Escapology se me ha adelantado por una milesima de segundo ;)

XTRminator escribió:Sin usar if anidados,
Con esto no se muy bien que quieres decir, pero esto mismo no te valdría?
if ((dat == ".") ||(dat == ",")||(dat == ";"))
O estos son los ifs anidados?
Saludox
Vale, muchas gracias. El tema es que no sabía cual era el operador de "o lógico", como el "y lógico" que es &&.

Haciéndolo con if anidados significa meter ifs dentro de otros ifs, con lo que la cosa se complicaría bastante.

Gracias de verdad.
3 respuestas