Ver Mensaje Individual
  #9 (permalink)  
Antiguo 31/10/2015, 13:00
Avatar de xKuZz
xKuZz
 
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Error al compilar en C++ (archivos)

Tienes una referencia completa sobre todas las funciones que puedes utilizar (en inglés) en:
http://www.cplusplus.com/reference/f...asic_ifstream/.

1. Como en tu archivo cada linea indica una palabra linea a linea lo metes es una cadena de caracteres (ya sea char* o std::string) y miras su longitud.

2. Si tu ifstream se llama archivo, la función archivo.eof() te devuelve true si se ha alcanzado el final del archivo. En caso de que esto ocurra puedes asumir con total seguridad que no hay ninguna palabra con el tamaño deseado.

Yo te voy a poner un ejemplo en el que cojo la primera palabra que encuentro con klongitud letras y la muestro por pantalla. Espero que te sirva de referencia para lo que necesitas hacer. Si no quieres que siempre te salga la primera palabra siempre, tendrás que meterlo en un array-C o en un std::vector si te permiten utilizarlo y sacar una de las palabras de longitud X aleatoriamente.

Código C++:
Ver original
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4. int main(){
  5.     ifstream archivo;
  6.     string palabra;
  7.     bool buscando=true; // Para salir del while cuando lo encuentre
  8.     const int klongitud=5; // Longitud de la palabra a encontrar
  9.  
  10.     archivo.open("palabras.txt");
  11.  
  12.     while (buscando){
  13.         if (archivo.eof()) {
  14.             buscando=false;
  15.             cout << "No hay ninguna palabra de " << klongitud << " letras.\n";
  16.         }
  17.         else {
  18.             getline(archivo,palabra);
  19.             if(palabra.size()==klongitud){
  20.                 buscando=false;
  21.                 cout << palabra << " es una palabra de " << klongitud <<  " letras.\n";
  22.             }
  23.         }
  24.     }
  25.     archivo.close();
  26.  
  27. }