Brauche Hilfe bei einem Array



  • Morgen,

    Ich versuche gerade meine Eingabe zu Überprüfen

    #include <iostream>
    using namespace std;
    
    int main ()
    {
    
    int test;
    
    const int zeichen =  10;
    char eingabe[zeichen];
    
    cout<<"Zeile Eingeben [MAX 10 Zeichen] :";
    cin>>eingabe;
    
    if (eingabe=="test")
    {
    cout<<"Ueberpruefung abgeschlossen";
    }
    
     system("PAUSE");
    }
    

    Aber wenn ich dort test eingebe kommt gar nichts -.-



  • Array schrieb:

    Morgen,

    Ich versuche gerade meine Eingabe zu Überprüfen

    #include <iostream>
    using namespace std;
    
    int main ()
    {
    
    int test;
    
    const int zeichen =  10;
    char eingabe[zeichen];
    
    cout<<"Zeile Eingeben [MAX 10 Zeichen] :";
    cin>>eingabe;
    
    if (eingabe=="test")
    {
    cout<<"Ueberpruefung abgeschlossen";
    }
    
     system("PAUSE");
    }
    

    Aber wenn ich dort test eingebe kommt gar nichts -.-

    Entweder, Du benutzt std::string:

    #include <iostream>
    #include <string>
    
    int main ()
    {
    
    int test;
    
    std::string input;
    
    std::cout << "Zeile Eingeben:";
    std::getline(cin, input);
    
    if (input == "test")
    {
    std::cout << "Ueberpruefung abgeschlossen";
    }
    
    system("PAUSE");
    }
    

    oder Du musst strcmp benutzten:

    #include <iostream>
    #include <cstring>
    
    //...
    if (!strcmp(input,"test"))
    {
    //...
    }
    


  • Mit using namespace std; drin funktioniert es, dann kann ich ja auch das std:: immer davor weglassen mit dem std:: davor kammen Fehlermeldungen.

    Ich hab das jetzt so

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () 
    { 
    
    string array;
    
    cout << "Zeile Eingeben:";
    getline(cin, array);
    
    if (array == "test")
    { 
    cout << "Ueberpruefung abgeschlossen"<<"\n";
    }
    
    cout<<array<<"\n";
    cout<<"erster wert: "<<array[0]<<endl;
    cout<<"zweiter wert: "<<array[1]<<endl;
    
    system("PAUSE");
    }
    

    ty für die schnelle Hilfe.



  • Array schrieb:

    Mit using namespace std; drin funktioniert es, dann kann ich ja auch das std:: immer davor weglassen mit dem std:: davor kammen Fehlermeldungen.

    Dann hast du etwas falsch gemacht. Ansich ist dies in der Sourcedatei aber meist unrelevant, doch NIEMALS using namespace in Headerdateien verwenden!

    Zudem ist eine Aussage wie "kamen Fehlermeldungen" kaum hilfreich.

    cu André



  • Hier sind die Fehlermeldungen:

    Erzeugen
    [C++ Fehler] Unit1.cpp(12): E2451 Undefiniertes Symbol 'cin'
    [C++ Fehler] Unit1.cpp(12): E2285 Keine Übereinstimmung für '_STL::getline<_CharT,_Traits,_Alloc>(undefined,_STL::string)' gefunden
    [C++ Fehler] Unit1.cpp(19): E2268 Aufruf der undefinierten Funktion 'system'

    #include <iostream>
    #include <string> 
    
    int main () 
    { 
    
    int test; 
    
    std::string input; 
    
    std::cout << "Zeile Eingeben:"; 
    std::getline(cin, input);
    
    if (input == "test") 
    { 
    std::cout << "Ueberpruefung abgeschlossen"; 
    } 
    
    system("PAUSE"); 
    }
    

    Aber warum darf man den kein using namespace std; benutzen ?



  • Array schrieb:

    Hier sind die Fehlermeldungen:
    ...
    [C++ Fehler] Unit1.cpp(12): E2451 Undefiniertes Symbol 'cin'

    Es heißt ja auch std::cin, da cin im Namensraum std liegt.

    Array schrieb:

    Hier sind die Fehlermeldungen:
    [C++ Fehler] Unit1.cpp(19): E2268 Aufruf der undefinierten Funktion 'system'

    Da ich system grundsätzlich nicht verwende, weiß ich jetzt auch nicht in welchen Header etc. diese definiert ist, aber es gibt zumindest für system("PAUSE") bessere und portablere Lösungen, hier verweise ich wieder auf die FAQ.

    Array schrieb:

    Aber warum darf man den kein using namespace std; benutzen?

    Man darf using namespace benutzen, nicht aber im Header. Wenn man im Header using namespace verwendet ist das so als würde man dies global einstellen. Damit verliert man wieder alle Vorteile von Namensräumen und ein Namenskonflikt ist früher oder später vorprogrammiert.



  • Ah okay.


Log in to reply