0
votes

Comment obtenir la première lettre des mots dans une phrase * sans * pointeurs, références, etc.

Ceci est un exemple de code que j'ai écrit: xxx

ma sortie est la suivante: xxx

Comment puis-je enregistrer le ' S 'et' t 'dans ma chaîne de "initiales"?

Je demande si cela peut être fait sans recourir à des pointeurs, références ou std :: car je ne suis pas assez familé assez bien pour commencer en utilisant ces concepts.


4 commentaires

EN.CPPREFERFERATION.COM/W/CPP/String/basic_string/push_back


nom [i] vous donne une référence, de sorte que cela ne remplisse pas vos exigences. En tout cas, "puisque je ne suis pas assez familier assez bien" n'est pas une raison pour ne pas utiliser quelque chose. Après tout, vous demandez ici de quelque chose que vous ne connaissez pas non plus, alors apprendre que quelque chose ne semble pas mal.


Je n'ai pas expérimenté avec C ++ mais votre flux peut être plus simple en divisant le texte avec de l'espace, vous obtiendrez une gamme de mots divisés que vous pouvez itération sur cela et extraire le premier caractère de chaque mot


Ne faites pas de valeurs de code difficiles comme 32. Cela pourrait être la mauvaise valeur, et cela ne montre pas les lecteurs de ce code (y compris plus tard dans votre vie) quelle valeur représente. si (nom [i] == '') .


3 Réponses :


0
votes

Au lieu d'utiliser

initials.append(name,i+1,1);


0 commentaires

0
votes

Vous pouvez utiliser quelque chose comme ci-dessous.

string name = ""; string initials = "";
name = "First Second Third";
initials = name[0];   //First letter of first word
for(int i=0;i<name.length();i++)
{
    if(name[i] == 32)
    {
        //cout << name[i+1];
        initials += name[i+1];   //Adding First char of Another word
    }
}
cout << "\nYour initials are " << initials << ".";


1 commentaires

Hey, merci beaucoup - cela fonctionne parfaitement. Je me sens plutôt mal de ne pas y penser.



0
votes

Il y a quelques problèmes dans ce code. Le plus gros est que ce n'est pas robuste: si le nom ne commence pas par un espace, il saute le premier mot du nom; Si quelqu'un attribue deux espaces d'affilée, le "initial" sera un espace; et si quelqu'un attribue un espace à la fin de l'entrée, le "code" sera '\ 0' . Pour se protéger de ces problèmes, le code doit vérifier que le personnage suivant est une lettre: xxx

mais j'irais avec des outils plus puissants que cette recherche crue et cet espace codé: xxx


2 commentaires

Pourquoi utiliseriez-vous STD :: Plus d'utilisateurs de noms de noms STD?


@ RyanRubidoux-Cosman - Stackoverflow.com/questions/1452721/...