hilfe bei string für mich schwer für euch einfach ?!
-
Also ich würde gerne wissen wenn ich jetzt eine cin eingabe mache und diese in einer meiner string variablen speichere.
wie kann ich später den ihnhalt auslesen bzw
string eingabe;
cout<<"Hallo bitte geben sie ein\n"<<endl;
cin<<eingabe; // ich würd ejetzt eingeben z.b baumund nun möchte ich den ihnhalt überprüfen
was steht an stelle 1,2,3,4 =Baum
mfg wäre nett wenn mir jemand schnelle hilfe gibt:)
-
Ein String kannst du wie ein Array behandeln, indem Falle könnte es so aussehen :
#include <iostream> int main() { std::string wort; std::cout << "Gib ein Wort ein = "; std::cin >> wort; for(int i = 0; i < wort.size(); i++) { std::cout << wort[i] << std::endl; } }
-
string wort;
cout << "Gib ein Wort ein = ";
cin >> wort;for(int i = 0; i < wort.size(); i++)
{
cout << wort[i] << endl;
}if (wort[i]<8)
{
cout<<"das wort war kuerzer als 8 buchstaben\n"<<endl;
}//else cout<<"versuchen sie es erneut\n"<<endl;
system("Pause");
}ich woltle es jetzt so probieren das wenn das wort eingegebn wird das geprüft wird ob es größer ist als 8 stellen und das dann eine ausgabe kommt könnte vll nochjmal jemand drüber schauen? mfg
-
Beim nächsten mal Cpp-Tags verwenden. Und schau mal bei deiner if-Abfrage. Wenn du mal logisch drüber nachdenkst, sollte dir auffallen, dass das kein Sinn ergibt, denn du fragst ab, ob der Buchstabe an Stelle "i" kleiner ist als 8. Du hast aber nirgends eine Variable die "i" heisst, außer in der for-Schleife, aber diese Variable gilt nur innerhalb der Schleife. Also mach folgendes :
if(wort.size() < 8) { ... }
-
CookiesCream schrieb:
...
Große Bitte:
1. Setze Code bitte in die cpp-Tags (Der Button C/C++ unterhalb des Editierfensters).
2. Du solltest dir in Foren Tabulatoren abgewöhnen
3. Verwende bitte eine Sprachreferenz, den dann würdest du sehen das string Funktionen wie size oder length anbietet, die dessen Größe wiedergeben. Es kann nicht Sinn des Forums sein das du jede Methode/Funktion anfragst. Verwende am besten ein sinnvolles C++ Buch.if(wort.length() < 8)Und ansonsten wirst du wohl auch mit Schleifen hantieren müssen (zumindest wenn du die Eingabe ggf. wiederholen willst.
-
ok danke :=)
-
Das nächste was mir auf der zunge liegt wäre wie ich das ganze jetzt noch darauf prüfen aknn ob das eingegebene Wort zahlen enthält, ich hoffe es nervt euch nicht zu sehr wenn ich hier andauernt frage ich habe auch 3-4 bücher was c++ angeht aber es ist für mich wesentlich einfacher zu verstehn wenn ich meine frage hierstelle und eine individuelle antwort von einen user hier bekomme da es sich direkt auf meine Frage bezieht und ich mein buch leider nich befragen kann.. mfg
-
CookiesCream schrieb:
Das nächste was mir auf der zunge liegt wäre wie ich das ganze jetzt noch darauf prüfen aknn ob das eingegebene Wort zahlen enthält
Genauso wie du auch auf Sonderzeichen prüfst. Du musst den String mit den entsprechenden ASCII-Werten (48-59) vergleichen.
-
Ich meinte natürlich 48-57!
-
// abc.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { string passwort; // Variable für die passwort zeichenkette wird deklariert cout << "Bitte geben Sie im naechsten Feld ihr Passwort ein: "; cin >> passwort; cout<<endl<< "------------------------------"<<endl; bool sonderzeichen = false; // keine sonderzeichen enthalten bool zahlen = false; // keine zahlen enthalten bool grossbuchstaben = false; // keine grossbuchstaben enthalten bool kleinbuchstaben = false; // keine kleinbuchstaben enthalten //bool reihenfolge = false; // keine reihenfolge enthalten #pragma region Forschleife for(int i = 0; i < passwort.length(); i++) // Zähl schleife mit der durchlaulvariablen i wobei i immer kleiner als die länge des passworts sein soll { cout << passwort[i]; // gibt den buchstaben an der stelle i des passworts aus int AsciiWert = passwort[i]; //wandelt den buchstaben an der stelle i in ascii wert um cout << " AsciiWert: " << AsciiWert<< endl; // gibt den wert aus if ((AsciiWert > 47)&&(AsciiWert<58)) // prüft ob der wert zwischen den beiden werten 47-58 liegt (47 liegt vor den werten in der ascii tabelle und 58 liegt hinter den zahlen werten in der ascii tabelle { zahlen = true; // setzt den wert auf wahr } else if ((AsciiWert > 64)&&(AsciiWert < 91)) //prüft ob der wert dazwischen liegt 64 liegt vor dcen grossbuchstaben 91 liegt dahinter { grossbuchstaben=true; } else if ((AsciiWert>96)&&(AsciiWert<123)) // prüft ob der wert zwichen 96 und 123 96 liegt vor den kleinbuchstaben und 123 dahinter { kleinbuchstaben=true; } else //alle andern ascii werte gelten als sonderzeichen { sonderzeichen = true; } } #pragma endregion #pragma region Penis cout << "------------------------------" << endl << endl; if (passwort.length()<8) //wenn passwort länge kleiner als 8 { cout<<"Das eingegebene Passwort war kuerzer als 8 ziffern.\n"<<endl; } else {cout<<"Ihre Eingabe ist länger als 7 Zeichen.\n"<<endl; } #pragma endregion cout<<"Das Passwort enthaelt:"<<endl; if(zahlen) { cout<<"- Zahlen"<<endl; } if(kleinbuchstaben) { cout<<"- Kleine Buchstaben"<<endl; } if(grossbuchstaben) { cout<<"- Grosse Buchstaben"<<endl;} if(sonderzeichen) { cout<<"- Sonderzeichen"<<endl; } cout << endl << endl; system("Pause"); }so nun zu meiner frage ... wenn ich eine leertaste eingebe passiert nichts bräcuhte hilfe das wäre sehr nett
danke euch
-
EEK@work schrieb:
Du musst den String mit den entsprechenden ASCII-Werten (48-59) vergleichen.
Autsch!
Mit den ascii werten '0'-'9' waere schon deutlich besser...
-
Shade Of Mine schrieb:
EEK@work schrieb:
Du musst den String mit den entsprechenden ASCII-Werten (48-59) vergleichen.
Autsch!
Mit den ascii werten '0'-'9' waere schon deutlich besser...
Dann würde mich aber schon interessieren, warum in jeder dieser Tabellen 0 den Wert 48, 1 den Wert 49...?
http://www.code-knacker.de/ascii.htm
http://unicode.e-workers.de/ascii.php
http://mandalex.manderby.com/a/ascii.php
-
EEK@work schrieb:
Shade Of Mine schrieb:
Mit den ascii werten '0'-'9' waere schon deutlich besser...
Dann würde mich aber schon interessieren, warum in jeder dieser Tabellen 0 den Wert 48, 1 den Wert 49...?
Mal ganz davon abgesehen das es außer ASCII noch andere Formate gibt (wobei diese mit Ausnahme von den Unicodevarianten für den Großteil der Programmierer wohl nicht relevant werden), ist '0' mit Sicherheit im Code lesbarer als 48.
-
EEK@work schrieb:
Shade Of Mine schrieb:
EEK@work schrieb:
Du musst den String mit den entsprechenden ASCII-Werten (48-59) vergleichen.
Autsch!
Mit den ascii werten '0'-'9' waere schon deutlich besser...
Dann würde mich aber schon interessieren, warum in jeder dieser Tabellen 0 den Wert 48, 1 den Wert 49...?
http://www.code-knacker.de/ascii.htm
http://unicode.e-workers.de/ascii.php
http://mandalex.manderby.com/a/ascii.phpAuch wenn ich selbst irgendwie lieber die Zahlenwerte verwende (weiß auch nicht warum), ist '0'-'9' schon lesbarer und weniger fehleranfällig. Denn du hast dich ja auch vertan (59?), was mit '0'-'9' halt nicht passiert wäre... :p
-
_matze schrieb:
Auch wenn ich selbst irgendwie lieber die Zahlenwerte verwende (weiß auch nicht warum), ist '0'-'9' schon lesbarer und weniger fehleranfällig.
Da gebe ich euch schon recht, dass 0 - 9 leichter zu lesen ist.
_matze schrieb:
Denn du hast dich ja auch vertan (59?), was mit '0'-'9' halt nicht passiert wäre... :p
Stimmt nicht ganz. Ich hab mich zwar vertan, das kam aber daher, dass ich mich vertippt habe. Ich hab es ja darunter dann berichtigt.
Bevor ich hier falsch verstanden werde. Ich will hier nicht den Schlaumeier spielen und behaupten dass ich recht habe. Aber wenn ich z.B. sowas mache
#include <iostream> int main ( int argc, char *argv[] ){ for ( int i = 0; i < 70; ++i ){ std::cout << i << " hat den Wert " << static_cast<char>(i) << std::endl; } }warum wird mit dann bei 0 nicht die 0, bei 1 nicht die 1... angezeigt?
-
EEK@work schrieb:
warum wird mit dann bei 0 nicht die 0, bei 1 nicht die 1... angezeigt?
Weil wir die ganze Zeit nicht von 0, sondern von '0' reden.
for(char i = '0'; i <= '9'; ++i) std::cout << i << " hat den Wert " << static_cast<int>(i) << std::endl;cu André
-
asc schrieb:
EEK@work schrieb:
warum wird mit dann bei 0 nicht die 0, bei 1 nicht die 1... angezeigt?
Weil wir die ganze Zeit nicht von 0, sondern von '0' reden.
Oh, das hatte ich übersehen.
