If Verzweigung

Vock

Grünschnabel
Ich drehe echt bald druch
bei deisem Code ist 1 fehler drin
wäre nett wenn sich das mal einer anguggn könnte


//Hier fängts an
#include <iostream>
#include <string>

using namespace std;

int main()
{
string name;


cout << "Gib deinen Vornamen ein: ";
cin >> name;
if (name ="Niklas")
{

cout <<"Na "<< name <<" du Drecksau *g*!" << endl;
}
else
{
cout <<"Hallo "<< name << endl;
}
return 0;
}
 
Hier liegt der Fehler:
Code:
if (name ="Niklas")
Du musst den Vergleichsoperator '==' und nicht den Zuweisungsoperator '=' verwenden!


// edit
Da war ich zu langsam...
 
Cool, thx
und gleich noch ne Frage *g*

es is ja n unterschgied wenn da steht:

if (name == "niklas") und
if (name == "Niklas")

wie geht das, das es beide sachen nimmt...das heisst
niklas und Niklas

?
 
tolower() arbeitet mit einem Zeichen, nciht mit C-String und schon gar nicht mit std::string.

Für einen std::string ist es am einfachsten durch das Array zu iterieren und dabei die Buchstaben zu ersetzen (am einfachsten ist das mit std::transform)
 
Könnte eine Funktion zum umwandeln eines Strings so aussehen?
Wenn ja freu ich mich weil ichn C++ nub bin, ansonsten bidde nich hauen :)
Code:
char lowercase (stringvariable) {
  for(int i=0;i<=stringvariable.size();++i) {
    stringvariable[i] = tolower(stringvariable[i]);
  }
  return(stringvariable);
}
hab gesehen, dass wohl
Code:
strlen()
die bessere Funktion für die Länge eines Strings ist, aber vielleicht könnte mir einer von euch mal erklären was stringvariable.size() zurückgeben würde?
Denn die hab ich in der Online MSDN gefunden und dabei ist mir aufgefallen dass ich mit der online msdn nicht klar komme :(
Ich find die voll unübersichtlich ...
Gibts nicht irgendeine schön übersichtliche C++ Referenz? Wie ist denn die vom Borland C++ Builder?
 
Zuletzt bearbeitet:
strlen() ist eine CRT-Funktion. Für std::string ist .length() korrekt.

Dein Bsp. hat zwei kleine Fehler:
- Der Parameter braucht einen Typ (std::string)
- Der Rückgabewert sollte std::string sein

Der Vollständigkeit halber ein "pures C++" Beispiel (nach der Methode, die ich oben beschrieben habe):

Code:
#include <iostream>
#include <string>
#include <locale>
#include <algorithm>

template <typename CharType>
class LowerCase
{
	std::locale loc;
public:
	LowerCase(const std::string& localeString) :
	  loc(localeString.c_str())
	{}

	CharType operator() (const CharType& character)
	{
		return std::tolower(character, loc);
	}
};

int main()
{
	std::string text("TEST-string mit UPPERcase und Sonderzeichen: ßÄöÜ");
	std::string lowerCaseText;
	lowerCaseText.resize(text.length());

	std::transform(	text.begin(), text.end(), lowerCaseText.begin(), 
					LowerCase<std::string::value_type>("German_Germany"));

	std::cout << "Original-String: " << text.c_str() << " " << std::endl;
	std::cout << "Lower-Case: " << lowerCaseText.c_str() << std::endl;

	return 0;
}
 

Neue Beiträge

Zurück