Ceci est un exemple de code que j'ai écrit: ma sortie est la suivante: p> Comment puis-je enregistrer le ' S 'et' t 'dans ma chaîne de "initiales"? P> 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. p> p>
3 Réponses :
Au lieu d'utiliser
initials.append(name,i+1,1);
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 << ".";
Hey, merci beaucoup - cela fonctionne parfaitement. Je me sens plutôt mal de ne pas y penser.
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 mais j'irais avec des outils plus puissants que cette recherche crue et cet espace codé: p> '\ 0' code>. Pour se protéger de ces problèmes, le code doit vérifier que le personnage suivant est une lettre:
Pourquoi utiliseriez-vous STD :: Plus d'utilisateurs de noms de noms STD?
@ RyanRubidoux-Cosman - Stackoverflow.com/questions/1452721/...
EN.CPPREFERFERATION.COM/W/CPP/String/basic_string/push_back
nom [i] code> 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] == '') code>.