[C++] cin.getline problem

Ich stimme dir eigentlich zu, nur dummerweise will getline einen C-String.
C++:
#include <iostream>
#include <string>

int main(void) {
  std::string str;
  std::getline(std::cin, str);
  std::cout << "Sie haben eingegeben: " << str << std::endl;

  return 0;
}

Ach ja, und ich ziehe diese Methode strcmp vor, weil ich das a) hübscher finde und ich b) strcmp nicht mag.
Also in anderen Worten: es gibt keinen objektiven Grund ;)

Grüße, Matthias
 
Ich stimme dir eigentlich zu, nur dummerweise will getline einen C-String.

Stattdessen ist es in C++ sinnvoll den überladenen << Operator der Klasse istream (siehe cin) zu verwenden, die standardmäßig bis zum EOL / NL liest (wenn möglich):
C++:
#include <iostream>
#include <string>

int main() {
    std::string eingabe;

    std::cout << "Bitte gebe das Passwort ein: ";

	std::cin >> eingabe;

	std::cout << (( "a" == eingabe ) ? "right" : "fail") << '\n';

    return EXIT_SUCCESS;
}

Ach ja, und ich ziehe diese Methode strcmp vor, weil ich das a) hübscher finde und ich b) strcmp nicht mag.
Es ist C-Stil - Entweder man mag es, oder nicht. Wichtig war erstmal, denke ich, dr_pepper einen sinnvollen Ansatz aufzuzeigen und auf die Tücken hinzuweisen.

Nachtrag: Wie immer zu langsam. Matthias Ansatz ist natürlich eleganter.
 
@Matthias:
Ok, danke, werde es in Zukunft wohl so machen.

@maeTimmae:
den >> opperator kann man gut benutzen wenn man ein Wort oder eine Zahl annehmen will, aber für nen Satz oder so geht das ja leider nicht.
 
Zurück