web-dev-qa-db-fra.com

cin >> "aucun opérateur ne correspond à ces opérandes"

J'ai travaillé sur un projet C++ en mode console Visual Studio 2012 et je continue à obtenir cette étrange erreur persistante avec la fonction cin.

Sous le >> Je reçois une ligne rouge et le programme me dit no operator matches these operands. J'ai initialisé tous les éléments du tableau dans une méthode distincte.

Voici un exemple d'extrait (le code réel contient beaucoup plus de variables):

for (int i = 0; i < 14; i++)
{
    cout << "For taxi: " << i+1 << "Please input the taxi rank they are currently parked at, if at all ('Train Station', 'South Walls' or 'Chell Road')" << endl;
    cin >> allTaxiDetails[i].taxiRank;
}

allTaxiDetails est un tableau de type de données "taxiDetails" qui est cette structure:

struct taxiDetails { 
    string taxiDriverSurname; 
    int taxiID; 
    int taxiCoordinates; 
    int numberOfSeats; 
    bool taxiContainsCustomerYesNo; 
    bool WheelChairAccessibleVehicle; 
    string taxiRank; 
    fareDetails fareDetailsForTaxi; 
    bool taxiAvaliable; 
};
11
user3163612

Le problème est que string n'a pas la méthode operator>>, Mais elle a ...

  1. Avez-vous oublié #include <string> En haut de ce fichier?
  2. Essayez peut-être d'utiliser getline(std::cin, allTaxiDetails[I].taxiRank, '\n');.
  3. Définissez operator>> Pour votre structure.
27
Keeler

Il semble que vous essayez de lire un objet de type std::string pour lequel vous avez en quelque sorte obtenu la définition de classe (par exemple en incluant <iostream>) mais vous n'avez pas obtenu toutes les opérations nécessaires! Assurez-vous d'inclure <string>:

#include <string>
// ...

Il est assez courant que certains en-têtes fournissent des définitions de certaines autres classes, mais en fait, n'utilisent pas l'intégralité de l'en-tête pour obtenir les définitions. Puisque std::string est nécessaire à certains endroits pour déclarer IOStreams, il est assez probable qu'il sera défini, mais probablement pas en incluant son en-tête complet.

9
Dietmar Kühl

Je crois oublier # include <string> cet en-tête critique est la source d'erreur. Cela m'est arrivé en tant que débutant en C++.

7
WayneX