3 votes

concaténation de caractères et de chaînes de caractères

#include <bits/stdc++.h>
using namespace std;

int main() 
{
    string s1 = "Alice";
    s1 +='\0';
    s1 +='\0';
    cout << s1.size() << endl;         // output: 7

    string s2 = "Alice";
    s2 += "\0";
    s2 += "\0";
    cout << s2.size() << endl;         // output: 5
}

Qu'est-ce qui ne va pas ici ?

Veuillez expliquer la différence entre le rôle des guillemets simples et des guillemets doubles dans la concaténation.

8voto

R Sahu Points 24027
s1 +='\0';

ajoute le caractère à s1 quel que soit le personnage.

s2 += "\0";

ajoute une chaîne à terminaison nulle à s2 . Pour cette raison, le caractère nul incorporé dans le RHS est considéré comme un terminateur de chaîne de caractères dans le cadre de cette fonction. En substance, cela équivaut à

s2 += "";

Cela explique la différence de rendement que vous avez observée.

Vous pouvez utiliser std::string::append pour ajouter les caractères nuls intégrés d'un char const* objeto.

s2.append("\0", 1);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X