2016-06-01 2 views
-6

Hier ist ein kleiner Ausschnitt meines Codes, wo ich feststecke. Ich möchte, dass der Code den Benutzer dazu auffordert, nach einem Namen zu suchen, selbst wenn er gefunden wird. Also bricht mein Code nicht ab. Mein Code ist fehlerhaft, weil jedes Mal, wenn die for-Schleife eine Nummer kleiner als meine Vektorgröße erreicht, "Name nicht gefunden" ausgedruckt wird. Das ist, was ich gesagt habe, aber ich kann einfach nicht einen Weg finden, das zu beheben. Ich habe andere Posts auf dem Stack gefunden und habe sie in meinem Code ausprobiert, aber sie funktionieren nicht.C++ Ausdruck "nicht gefunden" Nachricht bei der Suche ein Vektor nur einmal

do 
{ 
    cout <<"Enter name for search: "; 
    cin >> name; 

    for (int i = 0; i < pvector.size(); i++) 
    { 
     if (pvector[i]->fName == name || pvector[i]->lName == name) 
     { 
      cout << pvector[i]->fName << " "<< pvector[i] ->lName <<" "<<"username:"<< pvector[i]->userName <<" "<<"password:" << pvector[i]->pword <<endl; 
     }else if(i == pvector.size()-1) 
     { 
      cout << name <<" "<<"not found!" << endl; 
     } 
    } 
} while (cin.good()); 
+0

Nevermind, ich las "pvector" als "Zeiger auf einen Vektor" nicht "Vektor der Zeiger auf Strukturen" (Wahrscheinlich als "Profil" basierend auf OPs früheren Posts.) – NonCreature0714

+0

Bitte liefern Sie ein minimales, vollständiges und überprüfbares Beispiel ] (http://stackoverflow.com/help/mcve). –

+0

Dies kann einfach mit einem Debugger gelöst werden. –

Antwort

0

Sie eine Pause sind vermisst, wenn Sie ein Spiel finden haben, das funktioniert auf meiner Seite:

#include "stdafx.h" 

#include <iostream> 
#include <vector> 
#include <string> 


using namespace std; 

int main() 
{ 
    std::vector<std::string> pvector; 
    pvector.push_back("Steve"); 
    pvector.push_back("Jhon"); 
    pvector.push_back("Michael"); 

    char name[256]; 

    do 
    { 
     cout << "Enter name for search: "; 
     cin >> name; 

     for (int i = 0; i < pvector.size(); i++) 
     { 
      if (pvector[i] == name) 
      { 
       cout << pvector[i] << " found" << endl; 
       break; 
      } 
      else if (i == pvector.size() - 1) 
      { 
       cout << name << " " << "not found!" << endl; 
      } 
     } 
    } while (cin.good()); 
} 
+0

Dieser Code funktionierte, aber ich lief auf ein Problem, wenn ich mehrere Namen habe und sie ausdrucken möchte, druckt es nur das erste, das es findet. Ich nehme an, das ist wegen der Pause. Wie könnte ich alle Namen aus dem Vektor ausdrucken? –

+0

Behalten Sie einfach einen Zähler, wie lange der Name gefunden wurde. Geben Sie nur "Nicht gefunden" aus, wenn der Zähler beim Erreichen des Vektorendes noch auf 0 steht. –

0

nach dem Namen in Ihrem pvector gefunden wurde, sollten Sie die aktuelle for-Schleife brechen, dass der folgende Code bedeutet

cout <<"Enter name for search: "; 
cin >> name; 

for (int i = 0; i < pvector.size(); i++) 
{ 
    if (pvector[i]->fName == name || pvector[i]->lName == name) 
    { 
     cout << pvector[i]->fName << " "<< pvector[i] ->lName <<" "<<"username:"<< pvector[i]->userName <<" "<<"password:" << pvector[i]->pword <<endl; 
     break; // add a break here 
    }else if(i == pvector.size()-1) 
    { 
     cout << name <<" "<<"not found!" << endl; 
    } 
} 

der Bruch oben hinzugefügt wird nur die aktuelle for Schleife brechen und setzt die Rest do ... while Schleife

Verwandte Themen