IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Probleme utilisation string


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 7
    Par défaut Probleme utilisation string
    Bonjour,
    Bonjour ! Je débute en c++ et je ne comprends pas d’où viens mon problème dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
     
     
     
    void main(void)
    {
    	string test;
    	cout << "Ca va ?" << endl;
    	cin >> test;
    	if (test = "ca va")
    		cout << "bah moi aussi ! ca va !" endl;
    	else
    	{
    		cout << "tant pis" endl;
    	}
    }
    Des idées ?

  2. #2
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Bienvenue sur le forum !

    opérateur d'affectation a = b
    opérateur d'égalité a == b

    Aussi, il est preferable d'utiliser getline pour recuperer l'input.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    //==============================================================================
    int main()
    {
        std::string txt;
        std::getline(std::cin, txt);
        std::cout << txt << std::endl;
        return 0;
    }
    PS : attention à la forme du main qui devra être déclaré comme çi dessus.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 7
    Par défaut
    Bonjour et merci de ta réponse !
    Quelle est la différence concrète entre getline et cin ? et pourquoi "cin, txt" et pas "cin >> txt" ?

    Je débute donc désolé si les questions paraissent bête :p

  4. #4
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Je t'en prie ! Et comme le dit la signature de Leternel (membre très actif du forum) "La plus sotte des questions est celle qu'on ne pose pas."

    L'avantage du getline est qu'il récupère l'entièreté de ce qu'a saisi l'utilisateur, le cin quant à lui s'arrête aux espaces.

    Il permet par exemple de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <iostream>
    //------------------------------------------------------------------------------
    int main()
    {
        int num;
        std::string name;
        std::string nickname;
     
        std::cin >> num >> name >> nickname;
        std::cout << "Name : " << name << std::endl;
        std::cout << "Nickname : " << nickname << std::endl;
        std::cout << "Num : " << num << std::endl;
     
        return 0;
    }
    Il suffira d'entrer sur une même ligne de commande "20 bla blabla", ce qui affichera :
    Name : bla
    Nickname : blabla
    Num : 20
    Cependant, si l'entré est invalide, les problemes commencent..

    Avec le getline, la récuperation sera peut-être un peu plus compliqué, mais le contrôle sera plus efficasse et le buffer sera vidé.

    et pourquoi "cin, txt" et pas "cin >> txt"
    Car getline est une fonction qui prend en paramètre (pour la forme la plus commune) un flux et une string.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 7
    Par défaut
    Merci ! Dernière petite question: quelle est la différence entre void main(void) et int(void) je pense saisir la difference en général mais appliqué à main je ne comprends pas

  6. #6
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonne question...
    J'ai envie de dire parce que c'est comme ça.. La norme du c et du c++ veut : "int main()"
    Il y a probablement des raisons techniques que je ne connais pas. (verifier si le programme s'est bien terminé ?!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de string
    Par reventlov dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/03/2006, 17h50
  2. [debutant] probleme de string
    Par lamoueste dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2006, 11h35
  3. [RegEx]Probleme avec String.split
    Par sebastieng dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/02/2006, 21h24
  4. probleme capacité string
    Par jmjmjm dans le forum Langage
    Réponses: 5
    Dernier message: 06/01/2006, 15h38
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo