C++ entrée lors de l'Analyse de la chaîne de variables
À tous j'ai besoin de faire est d'analyser la chaîne d'entrée de votre nom complet, en 3 noms afin que je puisse prendre les initiales de chacun et de les imprimer. Quelqu'un peut me pointer dans la bonne direction?
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
string [parsed_output] = fullName.split(" ");
string firstName = parsed_output[0];
string middleName = parsed_ouput[1];
string lastName = parsed_output[2];
string fullName;
char firstLetter = firstName[0];
char middleLetter = middleName[0];
char lastLetter = lastName[0];
cout << "Enter your first name, middle name or initial, and last name separated by spaces: \n";
cin >> fullName;
cout << "Your initials are: " << firstLetter << middleLetter << lastLetter << '\n';
cout << "Your name is: " << firstName << " " << middleName << " " << lastName << '\n';
return 0;
}
Vérifiez ceci: stackoverflow.com/questions/5607589/... - Après le partage de la nom de, aller de l'avant et de parcourir les sous-chaînes et pour chacun d'impression le premier caractère, c'est à dire si
length() > 0
impression subString[0]
. Comme indiqué dans les réponses ci-dessous, vous pouvez aussi prendre les noms séparément. À moins que le traitement le nom complet est à la fois une exigence absolue.fullName
n'est pas déclaré, et que vous souhaitez analyser avant de mettre n'importe quoi dedans? Je pense que vous avez besoin de quelques bases en premier.OriginalL'auteur user2939276 | 2013-11-04
Vous devez vous connecter pour publier un commentaire.
Vous êtes bien faire les choses de façon compliquée. Quelle est la signification de " parsed_output[0];' et 'fullName' de toute façon? Vous pourriez faire:
Le Point de l'ensemble de
std::cin
est que vous obtenez un flux séparés par des espaces, des jetons à l'extraction de l'opérateur " >>". Si vous voulez extraire le premier, milieu & noms de famille par la Main (comme dans hasans de réponse), alors vous aurez besoin de l'ensemble de la chaîne en premier lieu (une chaîne avec tous les 3 noms et des espaces comme limiteur). À lire dans l'entrée avec espaces contenant vous utilisezstd::getline(std::cin, nom)
au lieu destd::cin
, parce questd::cin
va extraire l'Entrée jusqu'à la première fuite espace est rencontré.OriginalL'auteur Constantin
Vous pouvez utiliser, par exemple,
std::getline
pour obtenir le nom complet, etstd::istringstream
pour l'analyse:std::cin >> fullName
arrêter à l'espace? Vous devez utiliserstd::getline
d'exiger de l'analyse.Oui, bien sûr. Mise à jour de ma réponse. Merci
OriginalL'auteur Some programmer dude
OriginalL'auteur hasan