none
lecture mot par mot RRS feed

  • Question

  • salut, je travaille avec visual studio c++ 2005  windows forms,je veux lire a partir d'un fichier text mot par mot et je sais pas comment faire .est ce que il ya qlq qui peut m'aider svp.

    samedi 1 mai 2010 20:13

Réponses

Toutes les réponses

  • Bonjour,

    string s;
    ifstream f("fichier.txt");
    
    while (f >> s)
    {
      cout << s;
    }
    

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    samedi 1 mai 2010 22:25
    Modérateur
  • bonjour,merci pour ta reponse, jai travallé avec cette methode sur le console ca marche trés bien mais maintenant je ss sur clr application windows forms pour faire l'interface de mon application console cette methode ne marche plus la je sais pas comment faire mot par mot,jai trouvé que ligne par ligne .svp sil ya un methode dit moi sinon je lit caractere par caractere jusqua un blanc.merci
    dimanche 2 mai 2010 08:08
  • Bonjour,

    Si vous utilisez le CLR, vous pouvez lire ligne par ligne et ensuite vous utilisez la méthode Split() de la classe String : http://msdn.microsoft.com/fr-fr/library/system.string.split.aspx

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 2 mai 2010 08:14
    Modérateur
  • merci, je ss débutante dans clr ,si vous pouvez me dise comment j'utilise cette fonction parce chaque mot que je lit je vais le comparer avec les mots d'une liste de stop list(mots vides) pour savoir s'il existe dans cette liste.merci
    dimanche 2 mai 2010 08:22
  • voici ma fonction ou je doit eliminer tout les mots vides d'une collection (document et requete):

    void

     

    indexation::stop_dict(String ^name_fichier,String ^name_fichier1)

     

    if

     

    (name_fichier=="doc_token.txt" && name_fichier1=="doc_stoped.txt")

     

    gcnew StreamReader( "doc_token.txt");

     

    gcnew StreamWriter("doc_stoped.txt");

     

    if

     

    ( File::Exists("doc_token.txt") && File::Exists("doc_stoped.txt"))

     

    while(!f3->EndOfStream)

     

    if(word=="#I")

     

    else {

     

    if (word == "#W" || word == "#T" || word == "#K")

     

    //while ( !f3->EndOfStream && (word = f3->ReadLine() )&& (word[0] !='#'))

     

    if( index.appartient_stop_word(word)==false ) f4->WriteLine(word); dans cette boucle ou je doit lire mot par mot //

     

    else { f4->WriteLine(word);

     

    while ( !f3->EndOfStream &&(word= f3->ReadLine()) && (word[0] !='#'))

     

    else

     

    {

     

    gcnew StreamReader( "query_token.txt");

     

    gcnew StreamWriter("query_stoped.txt");

     

    if

     

    ( File::Exists("query_token.txt") && File::Exists("query_stoped.txt"))

     

    "la lecture de 1er caractere de f3 ";

     

    while(!f3->EndOfStream)

     

    if(word=="#I")

     

    else {

     

    if (word == "#W" || word == "#T" || word == "#K")

     

    //while ( !f3->EndOfStream && (word = f3->ReadLine())&& (word[0] !='#'))

     

    if(index.appartient_stop_word(word)==false) f4->WriteLine(word);  dans cette boucle ou je doit lire mot par mot //

     

    else {f4->WriteLine(word);

     

    while ( !f3->EndOfStream &&(word= f3->ReadLine()) && (word[0] !='#'))

     

     

    f4->WriteLine(word);

    }

    } }

    }

    f3->Close();

    f4->Close();

    }

    }

     

     

     

    }

     

     

     

     

     

    {

    f4->WriteLine(word);

     

     

     

     

    {

    f4->WriteLine(word);

    word= f3->ReadLine();

    }

     

     

     

    {

     

     

     

     

    {word= f3->ReadLine();

    cout <<

     

     

     

    StreamWriter^ f4 =

     

    StreamReader^ f3 =

     

    f4->WriteLine(word);

    }

    } }

    }

    f3->Close();

    f4->Close();}

     

     

     

    }

     

     

     

     

     

    {

    f4->WriteLine(word);

     

     

     

     

    {

    f4->WriteLine(word);

    word=f3->ReadLine();

    }

     

     

     

    {

     

     

    {word = f3->ReadLine();

     

     

     

     

     

    StreamWriter^ f4 =

     

    {StreamReader^ f3 =

     

    {

    String ^word;

    indexation index;

    dimanche 2 mai 2010 08:28
  • Bonjour,

    Voici un code qui récupère les mots contenu dans une ligne "s" :

    String ^s;
    array<String ^> ^mots;
    
    s = // Ligne lue
    
    mots = s->Split(' ');

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 2 mai 2010 08:37
    Modérateur
  • alors la methode split donne tout les mots dans par exemple  mots comme vous avez ecrits ,mai comment accedé au 1er mots pour le comparer.merci
    dimanche 2 mai 2010 08:45
  • Bonjour,

    "mots" est un tableau, donc utilisez mots[0] pour accéder au premier mots, mots[1] pour le deuxième et ainsi de suite...

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 2 mai 2010 08:53
    Modérateur
  • merci beaucoup pour les reponses,je vais essayé maintenant.
    dimanche 2 mai 2010 08:55
  • salut,comment savoir la taille de ce tableau pour faire une boucle qui lit tout ces mots.merci
    dimanche 2 mai 2010 09:02
  • Bonjour,

    Utilisez la propriété : mots->Length

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 2 mai 2010 09:23
    Modérateur
  • salut, jarrive pas a mettre mots[i] en entree de fonction lors de l'appel du fonction et dans la fonction elle meme

     

    bool appartient_stop_word(array<System::String ^>);le prototype

    if

     

    ( index.appartient_stop_word(mots[i])==false ) l'appel

    et la fontion

     

    bool indexation::appartient_stop_word(array<String ^> ^mots[i])

    {..............................................}

    je sais pas comment le fait en entree.parceq lors de compilation il ya bq d'erreur .merci jattend votre reponse svp

    dimanche 2 mai 2010 10:44
  • Bonjour,

    mots est de type "array<String ^>"
    mots[0] est donc de type "String ^"

    Donc à vous de faire correspondre les bons types de paramètres que vous voulez utiliser.

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 2 mai 2010 10:48
    Modérateur
  • merci,je pense maintenant jai bien fait les choses mais tjr il ya des erreurs .les erreurs sont

    .\indexation.cpp(172) : error C2065: 'i': identificateur non dclar

    .\indexation.cpp(172) : error C2728: 'System::String ^': un tableau natif ne peut pas contenir ce type manag

    Souhaitez-vous utiliser 'array<System::String ^>'?

    .\indexation.cpp(173) : error C2511: 'bool indexation::appartient_stop_word(System::String ^[])': impossible de trouver la fonction membre surcharge dans 'indexation'

    c:\documents and settings\sarah\mes documents\visual studio 2005\projects\essai\essai\indexation.h(8): voir la dclaration de 'indexation'

    .\indexation.cpp(233) : error C2143: erreur de syntaxe: absence de ';' avant ')'

    .\indexation.cpp(233) : error C2143: erreur de syntaxe: absence de ';' avant ')'

    .\indexation.cpp(271) : error C2143: erreur de syntaxe: absence de ';' avant ')'

    .\indexation.cpp(271) : error C2143: erreur de syntaxe: absence de ';' avant ')'

    Le journal de gnration a t enregistr l'emplacement "file://c:\Documents and Settings\sarah\Mes documents\Visual Studio 2005\Projects\essai\essai\Debug\BuildLog.htm"

    essai - 7 erreur(s), 0 avertissement(s)

    ========== Gnration: 0 a russi, 1 a chou, 0 mis jour, 0 a t ignor ==========

    dimanche 2 mai 2010 10:56
  • Bonjour,

    Déclarez la variable i. Vérifiez les signatures des méthodes entre le .h et le .cpp si elles sont correctes.

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    dimanche 2 mai 2010 15:03
    Modérateur
  • Bonjour,

    normalement il sont corrects,et i est déclaré

    dans le .h 

     

    bool appartient_stop_word(System::String ^);

    dans le .cpp  il ya la fonction et l'appel de cette fonction

    l'appel :

     

    while ( !f3->EndOfStream && (word = f3->ReadLine())&& (word[0] !='#'))

    { mots=word->Split(

    ' ');

     

    for(i=0,i<=n,i++)

     

    if( index.appartient_stop_word(mots[i])==false ) f4->WriteLine(mots[i]);}

     

    et la fonction :

     

    bool indexation::appartient_stop_word(String ^ mots[i]){................} et i est declaré dans .cpp .merci

    dimanche 2 mai 2010 15:25