(wahrscheinlich simple) frage zu array/strings



  • Hi Leute.....

    hab mal schnell ne Frage an euch: Wie kann man nen String in ein Array eingeben. Irgendwie haut das mit cin.getline nich ganz hin.

    bsp.:

    [cpp]
    string x[10];
    
    	int i;
    
    	for (i=0; i<=10; i++)
    	{
    		cout<<"Bitte Irgendwas eingeben: ";
    		cin.getline(x[i]);
    	}
    [/cpp]
    

    Also das Prob ist, dass ich in ein Array eine mehrstellige Zeeichenkette eingeben will u.U. mit Lehrzeichen.

    Thx für alle Hilfen

    cheers MW



  • std::vector<std::string> v;
    v.assign(10);
    std::string str;
    
    for(int i=0; i < v.size(); i++) // eventuell v.size()+1 bzw. v.size()-1 ?
    {
        std::cout << "eingabe: " << std::endl;
    
        str.clear();
        std::cin.getline(str);
        v.push_back(str);
    }
    


  • ähm aha..... ich glaub dir, dass das fuktioniert - hab aber ein problem dabei. Ich hab noch nich allzu lang cpp und kann somit deinen quelltext null interpretieren. sry.
    könnte man die aufgabe - das ist in ner aufgabenstellung, die ich bekomm hab von meiner schule - nicht irgendwie in einer einfachen variante lösen? Es ist ziemlich scheiße, wenn ich was erklären soll, wenn ich dass dann selbst nich mal kapiert hab....

    muss doch noch anders gehen, oder?

    trozdem thx.... für die hilfe



  • was hindert dich eigentlich daran sowas hier zu benutzen?

    #include <iostream>
    #include <string>
    
    int main()
    {
    	std::string str_array[10];  // das array aus strings
    								// das std:: ist schönheitssache ;) ich benutzt das lieber als oben using namespace std
    								// zu schreiben
    
    	for(int i=0; i < 10; i++)   // eine for-schleife, von 0 bis 10
    	{
    		std::cout << "eingabe: " << std::endl; // ausgabe mit cout
    		std::cin >> str_array[i]; // eingabe mit cin
    	}
    	return 0;
    }
    

    Falls du cin.getline() benutzen willst könntest dus so machen:

    #include <iostream>
    #include <string>
    
    int main()
    {
    	std::string str_array[4];	// das array aus strings
    								// das std:: ist schönheitssache ;) ich benutzt das lieber als oben using namespace std
    								// zu schreiben
    
    	char* char_ptr = new char[1024]; // das hier ist ein pointer auf frisch angelegten
    									 // speicher mit der größe 1024 chars ;)
    
    	for(int i=0; i < 4; i++)   // eine for-schleife, von 0 bis 10
    	{
    		std::cout << "eingabe: " << std::endl;	// ausgabe mit cout
    
    		memset(char_ptr, 0, sizeof(char_ptr)); // hier wird der speicher des von char_ptr gesetzt (memory set = memset)
    											   // undzwar wird er mit sovielen 0'ern gefüllt wie groß der speicher ist
    		                                       // die größe des speichers holen wir uns mit sizeof(char_ptr)
    		                                       // sizeof(char_ptr) wird also zu 1024
    
    		std::cin.getline(char_ptr, 1024); // hhier wird die eingabe in char_ptr gespeichert
    		                                  // undzwar max 1024 chars, denn für mehr is ja kein speicher da ;)
    		str_array[i] = char_ptr;          // char* kann gott sei dank in std::string konventiert werden -> gleichsetzung
    	}
    
    	delete char_ptr; // der wohl wichtigste teil^^
    	                 // hier wird der speicher von char_ptr wieder freigegeben
    
    	return 0;
    }
    


  • Walter-Mensch schrieb:

    was hindert dich eigentlich daran sowas hier zu benutzen?

    for(int i=0; i < 4; i++)   // eine for-schleife, von 0 bis 10
    

    4!=10 ⚠ 🤡
    hm...ich weiß ja net, aber das würde doch auch gehen?!

    int main(int argc, char* argv[])
    {
    string str[4];
    string eingabe;
    for(int i=0;i<4;i++)
    {
      getline(cin,eingabe);
      str[i]=eingabe;
    }
    


  • @ser1al dein string eingabe ist hier absolut unnötig und sinnlos. Den kann man sich sparen 😉

    int main(int argc, char* argv[])
    {
      string str[4];
      int cnt = 0;
      while(cnt < 4 && getline(cin,str[cnt])
        ++cnt;
    }
    


  • evilissimo schrieb:

    @ser1al dein string eingabe ist hier absolut unnötig und sinnlos. Den kann man sich sparen 😉

    int main(int argc, char* argv[])
    {
      string str[4];
      int cnt = 0;
      while(cnt < 4 && getline(cin,str[cnt])
        ++cnt;
    }
    

    yo, aber besser als das beispiel mitm char pointer 😛



  • 4!=10 ⚠ 🤡

    Copy & Past, ich verfluche dich!


Anmelden zum Antworten