Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplacer les espaces d'une string

    28 août 2007 à 23:03:48

    Salut,
    Je voudrais savoir comment remplacer les espaces d'une string.
    C'est pour un chat simple.
    Je voudrais par exemple les remplacer par des + ou des _.

    Merci d'avance.

    Gp2mv3
    • Partager sur Facebook
    • Partager sur Twitter
      28 août 2007 à 23:14:25

      pour qu'elle raison ? parce que ta "string" est coupée au 1er espace ?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        28 août 2007 à 23:18:30

        for (i = 0; i < ninia; i++)
        if (string_[i] == ' ')
        string_[i] = '+';

        (Je sais que ce code est pas dans les balises codes, mais il est court)
        • Partager sur Facebook
        • Partager sur Twitter
          29 août 2007 à 0:20:53

          std::replace, c'est bien aussi.

          EDIT: confusion avec un autre post
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
          Anonyme
            29 août 2007 à 0:24:14

            Désolé, je ne connaissais pas :(
            Sinon, où est définie cette fonction ? Dans <algorithm> ?
            • Partager sur Facebook
            • Partager sur Twitter
              29 août 2007 à 11:34:49

              En fait c'est pour envoyer la chaine par winsock.
              Et le serveur la décompose mais si il y a des espaces, il va prendre que le premier mot.
              Enfin je pense...

              Bien amicalement.

              Gp2mv3
              • Partager sur Facebook
              • Partager sur Twitter
                29 août 2007 à 14:09:01

                Pourquoi ne pas envoyer la longueur de la chaine d'abord ?
                • Partager sur Facebook
                • Partager sur Twitter
                C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                  29 août 2007 à 16:33:03

                  bah parceque c'est pour un MMORPG et j'ai fais un system de "Commandes" par exemple pour les messages, la commande est : M "Le login" A"Le message".
                  A = ajouter un message.
                  Pour les positions c'est P, connexion C,...

                  Voila.

                  Bien amicalement.

                  Gp2mv3
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 août 2007 à 16:37:06

                    Rien n'emêche d'envoyer la longueur d'abord.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                      29 août 2007 à 16:54:05

                      oui mais je pense qu'il est plus facil de modifier les espaces. ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 août 2007 à 23:07:32

                        Et comment tu sauras, efficacement, quand arréter de lire ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                          29 août 2007 à 23:36:26

                          bah je met par exemple à la fin ";".
                          Le serveur fait en fait un sscanf (je sais que c'est du C).
                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 août 2007 à 0:13:03

                            Un sscanf ? Ca marche sur les sockets ça ?

                            (Lire caractère par caractère, cela ne va pas être efficace)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                              30 août 2007 à 12:17:35

                              Si sa fonctionne tres bien pour le serveur de connexion, positions et le serveur d'inventaire.

                              Bien amicalement.

                              Gp2mv3
                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 août 2007 à 23:01:01

                                ça fonctionne très bien pour 1 connexion ou tu as tester 1000 client connectés en même temps?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  31 août 2007 à 0:06:30

                                  ??
                                  sscanf va parser une chaine que tu as déjà en mémoire. Cela ne travaille par sur une socket!
                                  Un read sur la socket va lire un nombre d'octet qui doit être spécifié au moment de la lecture (socket).

                                  Il suffit de lire d'un côté une chaine (std::getline() puisque nous ne sommes pas sur le forum C), tu balances depuis ce côté le nombre d'octets de ta chaine, puis la chaine. De l'autre côté, tu lis un nombre, puis autant d'octets que tu ranges dans un buffer de caractères. Ce buffer tu les parse ensuite avec sscanf ou des trucs plus intelligents et robustes, et basta.

                                  Il n'y a rien à remplacer. Et les chaines qui circulent peuvent être de longueur quelconque. Et les échanges optimisés (on ne fait pas 150 read de 1 octet).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                                    3 septembre 2007 à 0:32:20

                                    exact , j'avais le mm probleme et j'ai cherché un peu et j'ai trouvé comment faire :
                                    string message;
                                    std::getline(cin,message);
                                    et les espaces se mettent ;)
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Remplacer les espaces d'une string

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown