String wird nach einem Wort abgeschnitten.



  • Hallo,
    bin c++ Anfänger und verstehe nicht warum mein String nach einem Wort abgeschnitten wird:

    #include <iostream>
    using namespace std;
    
    int main(void){
    	char name[20];
    
    	cin>>name;
    	cout<<"\n"<<name;
    	return 0;
    }
    

    Wenn ich eingebe: "Hallo wie gehts" wird nur "Hallo" ausgegeben !?

    MfG KK!



  • Das liegt daran, dass der >>-operator der Klasse istream (von der cin eine Instanz ist) in strings nur bis zum nächsten whitespace einliest. Wenn du ne ganze Zeile haben willst, machs so:

    getline(cin, name);
    

    Ansonsten würde ich dir dringend empfehlen, name als std::string zu deklarieren, nicht als char-array - "Hallo wie gehts" ist schon 16 byte groß, du läufst also in Gefahr, den Buffer zu überfüllen. So würd ichs machen:

    #include <iostream>
    #include <string>
    
    int main() {
      std::string name;
    
      std::getline(std::cin, name);
      std::cout << std::endl << name << std::endl;
    }
    

Anmelden zum Antworten