C++ ne Peut pas soustraire deux chaînes
Je veux soustraire deux chaînes dans ce code, mais il ne me laisse pas faire et donne un opérateur d'erreur. Ce code fondamentalement essaie de séparer un plein nom de l'entrée en deux sorties: nom et prénom. S'Il Vous Plaît Aider! Merci!!!!
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
string employeeName, firstName, lastName;
int pos1, difference;
int main() {
cout << "Enter your full name: " << endl;
getline(cin, employeeName);
pos1 = employeeName.find(" ");
difference = pos1 - 0;
lastName = employeeName.erase(0,difference);
firstName = employeeName - lastName;
cout << lastName << firstName << endl;
system("pause");
return 0;
}
- vous pouvez utiliser std::string.méthode substr
- Merci pour la réponse. Mais je veux le faire, la simple méthode, car ce q a été lors de mon essai, et nous n'avons pas couvert choses avancées.
- Regardez dans votre C++ manuel ou livre de référence, pour voir tous les opérateurs disponibles avec
std::string
et de vérifier l'opérateur de soustraction. - Notez que
string::erase
modifie la chaîne d'entrée, de sorte que même sifirstName = employeeName - lastName
travaillé, le premier nom a déjà été effacé deemployeeName
. - merci Jonathan!! C'était vraiment utile!!!
- Eh bien, je dois admettre que je ne peux penser à des situations où une chaîne de soustraction pourrait être utile pour l'opérateur. `"chat" - "chien" est en effet taureau, mais à l'occasion, il pourrait être utile. Car ce serait une très précaire de l'opération, je vous suggère d'utiliser seulement après test si cela peut être fait à tout.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
std::string::substr
. En soustrayant comme les chaînes qui n'est pas valide.Le premier paramètre est l'indice de départ de la sous-chaîne à extraire et le deuxième paramètre est la longueur de la sous-chaîne.
Comment définiriez-vous un moins de l'opérateur pour une chaîne de caractères? Souhaitez-vous soustrayez depuis le début? Ou la fin?
En outre, ce qui est
"cat" - "dog"
? Cet opérateur n'aurait pas de sens.Au lieu de cela, vous pouvez utiliser la chaîne des indices, c'est à dire
employeeName[i]
, et copie les caractères individuellement, ou utiliserstd::string::substr
oustd::string::erase
, comme d'autres l'ont suggéré.Je voudrais trouver
substr()
le plus simple, en raison de sa capacité à supprimer des sections de la chaîne (dans ce cas, le premier et le dernier nom).Il n'y a pas de "moins" (-) de l'opérateur pour std::string. Vous devez utiliser std::string::substr ou std::string::erase
Si vous voulez vraiment utiliser - opérateur, vous pouvez surcharger.