bool isInString



  • Ich habe "leichte" Probleme, diese Aufgabe zu lösen.

    U.a. erhalte ich folgende Fehlermeldung:
    q:\informationstechnik\aufg2\aufg2\aufg2.cpp(22) : error C2065: 's1': nichtdeklarierter Bezeichner
    q:\informationstechnik\aufg2\aufg2\aufg2.cpp(23) : error C2563: Listen der formalen Parameter stimmen nicht überein
    q:\informationstechnik\aufg2\aufg2\aufg2.cpp(23) : error C2568: '<<': Auflösung der Funktionsüberladung nicht möglich

    Danke, wenn sich jemand aufopfert und mir einen Tipp geben kann.

    // Aufg2.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    /* Schreibe eine Funktion mit dem Funktionskopf: bool isInString(sring s1, string s2), die überprüft, ob der erste String im zweiten enthalten ist. */
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    bool isInString (string s1, string s2)
    {
    	if(isInString(s1, s2))
            return true;
    	else
    		return false;
    }
    int main ()
    {
    	cout << "Ist string s1 in string s2 enthalten?"
    		 <<endl;
    
    	cout << s1 = "Hallo"
    	 	 <<endl;
    
    	cout << s2 = "Hallo, wie geht´s?"
    		 <<endl;
    
    	if (isInString (s1, s2))
    		{
    			cout << "Ja."
    			<<endl;
    		} 
    		else
    		{	
    			cout << "Nein."
    			<<endl;
    		}
    }
    


  • Ich würde dir das lesen eines C++ Tutorials empfehlen. "Thinking in C++" bekommst du zB als kostenloses eBook...



  • Thinking in C++ habe ich seit gestern Abend in pdf-Form.
    Leider, leider absolut unübersichtlich und dann noch in Englisch.



  • bool isInString (string s1, string s2)
    {
        return s1.find(s2) != std::string::npos;
    }
    

    so oder so ähnlich.



  • #include <iostream>
    #include <string>
    
    bool isInString(const std::string&, const std::string&);
    
    int main()
    {
        std::cout << "IN String V1.0" << std::endl;
        std::cout << "String 1: " << std::flush;
        std::string s1;
        std::getline(std::cin, s1);
        std::cout << "String 2: " << std::flush;
        std::string s1;
        std::getline(std::cin, s2);
        std::cout << (isInString(s1, s2) == true ? "Enthalten!" : "Nicht enthalten!") << std::endl; 
    }
    
    bool isInString (const std::string& s1, const std::string& s2)
    {
        return (s1.find(s2) != std::string::npos);
    }
    

    ...



  • hi,

    wenn ich nun allerdings das beispiel von ganz oben einsetze, funktioniert es nicht. also string1: "Anna" und string2: "Hier wohnt Anna". dann gibt das programm aus, dass es nicht enthalten ist.

    wie muss man das programm ändern damit es auch auf diese weise geht??

    //edit:

    ok habs....

    #include "stdafx.h"
    #include <iostream> 
    #include <string> 
    
    bool isInString(const std::string&, const std::string&); 
    
    int main() 
    { 
        std::cout << "IN String V1.0" << std::endl; 
        std::cout << "String 1: " << std::flush; 
        std::string s1; 
        std::getline(std::cin, s1); 
        std::cout << "String 2: " << std::flush; 
        std::string s2; 
        std::getline(std::cin, s2); 
        std::cout << (isInString(s1, s2) == true ? "Enthalten!" : "Nicht enthalten!") << std::endl; 
    } 
    
    bool isInString (const std::string& s1, const std::string& s2) 
    { 
        return (s1.find(s2) != std::string::npos) ||
    	 (s2.find(s1) != std::string::npos);
    }
    


  • string2 ist ja auch nicht in string1 enthalten



  • Und deine Änderung ist nicht wirklich korrekt ... du willst ja gucken ob 1. im 2. und nicht ob 2. in 1. String enthalten ...


Anmelden zum Antworten