Estoy trabajando en una tarea en la que se supone que debo leer un archivo y contar el número de líneas y al mismo tiempo contar las palabras en él. Intenté una combinación de getline y strtok dentro de un ciclo while, que no funcionó.¿Cómo dividir un archivo de texto en palabras?
file: example.txt (el archivo para ser leído).
Hola, hola qué agradable sorpresa.
Bienvenido a este lugar.
Que tengas una estancia agradable aquí.
(3 líneas y algunas palabras).
Readfile.cpp
#include <iostream>
#include <fstream>
#include<string>
using namespace std;
int main()
{
ifstream in("example.txt");
int count = 0;
if(!in)
{
cout << "Cannot open input file.\n";
return 1;
}
char str[255];
string tok;
char * t2;
while(in)
{
in.getline(str, 255);
in>>tok;
char *dup = strdup(tok.c_str());
do
{
t2 = strtok(dup," ");
}while(t2 != NULL);
cout<<t2<<endl;
free (dup);
count++;
}
in.close();
cout<<count;
return 0;
}
que necesita decir más que "no funcionó". Díganos qué error obtiene, o lo ESPECÍFICO que su programa hace de manera diferente a lo que esperaba, luego formule una pregunta específica. No depuraremos ni reescribiremos su tarea por usted. – Blorgbeard
¿Qué tal algunos de los ejemplos de los siguientes: http://www.codeproject.com/KB/recipes/Tokenizer.aspx Son muy eficientes y algo elegantes. La biblioteca String Toolkit hace que el complejo procesamiento de cadenas en C++ sea simple y fácil. –