String zeichen Lesen!
-
Ich will wissen ob man einen String einlesen kann, und das Programm dann sagt wie viele Zeichen der String hat, und diese dann evtl. in einer Variable speichert. Ist das möglich?
LPP1991
-
-
Also ich hab gelesen und verstanden, doch versteh ich nich ganz, wie ich einen String immer wieder um ein bestimmtes zeichen erweitern kann.
Also: Ich definiere vor der main "string erg;"
und innerhalb der main soll dem String dann ein "M" angehängt werden.
und danach evtl. nen anderer Buchstabe, aber wie geht das? Und vorallem wie lass ich den dann anzeigen?LPP1991
-
Hat sich schon erledigT!
LPP1991
-
Tut mir leid, aber ich dachte das Problem mit dem zeichen anhängen gelöst zu haben, doch habe ich nun ein Problem, Ich habe vor der main den String erg definiert:
string erg = "Entziffert heisst es:";dann innerhalb der mein folgendes:
if(text.substr(text.length()-1)=="a") { erg = erg.append(m); } if(text.substr(text.length()-1)=="b") { erg = erg.append(n); }wenn ich nun für text "ba" eintippe müsste er normalerweise sagen:
Entziffert heisst es: mn
Doch sagt er nur:
Entziffert heisst es: m
Daraus schließe ich dass er den 2. Buchstaben garnicht mehr abfragt. WARUM?
LPP1991
-
So hier ist der Mittelteil, wo das Problem ist, ich hoffe ihr könnt helfen.
while(ek==0) { if(text.substr(text.length()-1)=="a") { erg = erg.append(m); } if(text.substr(text.length()-1)=="b") { erg = erg.append(n); } text.resize(1); laeng=text.length(); if(laeng==1){break;} }
-
LPP1991 schrieb:
So hier ist der Mittelteil, wo das Problem ist, ich hoffe ihr könnt helfen.
while(ek==0) { if(text.substr(text.length()-1)=="a") { erg = erg.append(m); } if(text.substr(text.length()-1)=="b") { erg = erg.append(n); } text.resize(1); laeng=text.length(); if(laeng==1){break;} }Was versuchst du da? Willst du das erste Zeichen überprüfen?
std::string Blub = "Hallo!"; if ( Blub[0] == 'H' ) // Man fängt bei 0 an zu Zählen! 0 = erste Zeichen, 1 = zweite Zeichen { std::cout << "H an erster Stelle!" << std::endl; } if ( Blub[1] == 'a' ) { std::cout << "a an zweiter Stelle!" << std::endl; }
-
Nein, ich will ein Programm haben, mit dem ich eine Art Geheimschrift machen kann, also dass das Programm buchstaben tauscht. also der User gibt ein Wort mit "A" ein, also Affe, und das programm ändert dass dann in z.B. Milla
Geht das eigentlich bei Strings nicht auch mit replace? Aber wie?
LPP1991
-
Ich glaub ich kann das Problem beheben, wenn ihr mir sagt, wie ich mehrer zeichen nacheinander, in verschiedenen if schleifen hinzufügen kann, und vorallem, wie ich ein zeichen des Strings lösche. Vieleicht könnt ihr mir ja auch sagen, wie ich es schaffe, dass das Programm nicht den Letzten Buchstaben untersucht, sondern von vorne anfängt, und danach den ersten löscht, dann vom rest wieder den ersten usw...
LPP1991
-
einfach buchstabe für buchsrtabe einlesen, mit switch abfangen, und dann ersetzen, dann noch ein programm, dass das ganze rchwärts macht und schon hast du ein tollen codieralgorithmus (der noch zu knacken ist). Dafür brauchst du nichtmal strings
char wort[] = "affe" char *ptr = wort; while(ptr){ switch(*ptr){ case 'a': *ptr = 'm'; break; case 'b': *ptr = 'x'; break; //... case 'Z': *ptr = 'I'; } ptr++; }ungetestet, aber für eine idee hoffe ich reichts
-
Also ich habe das nun probiert, doch bekomme ich immer "xxx.exe hat ein Problem festgestellt und muss beendet werden.
-
Ich arbeite mit am Programm, versuche jedoch eine andere Möglichkeit.
wenn beim cin "asd" eingegeben wird, kann ich dann etwas eingeben, dass mir den Platz für die anderen 2 Buchstaben (s,d) unabhängig vom Buchstaben freihält
(In diesem Fall als "X" angegeben)
if(text.substr(text.length()-2)=="aXX") {...}
-
Ihr beide könntet euch auch mal for_each und unary_function anschauen...
Dann könnte das ganze so aussehen...
MSVC6 schrieb:
#include <iostream> #include <string> #include <algorithm> #include <functional> using namespace std; template<class TYPE, bool decr> struct change_value : public unary_function<TYPE, void> { void operator() (const TYPE& x) { if(decr) if(x % 2 == 0) const_cast<TYPE&>(x) = const_cast<TYPE&>(x) + 2; else const_cast<TYPE&>(x) = const_cast<TYPE&>(x) - 2; else if(x % 2 == 0) const_cast<TYPE&>(x) = const_cast<TYPE&>(x) - 2; else const_cast<TYPE&>(x) = const_cast<TYPE&>(x) + 2; } }; int main() { string eingabe; cin >> eingabe; for_each(eingabe.c_str(), eingabe.c_str() + eingabe.length(), change_value<char, true>()); cout << eingabe << endl; for_each(eingabe.c_str(), eingabe.c_str() + eingabe.length(), change_value<char, false>()); cout << eingabe << endl; return 0; }Gruß
zeigerzeiger
-
habe das Problem behoben, danke trotzdem! War garnicht so schwer. Also heißt es nun: THREAD CLOSED!
LPP1991