zeichen im String bewegen
-
Wie verschiebe ich das * bei der Eingabe von r bzw l nach rechts bzw. links?
#include <iostream> #include <string> using namespace std; int main() { string text; char eingabe = 'a'; cout << "Bitte geben Sie den Text ein: ? "; getline(cin, text); text.at(0) = '*'; cout << text << endl; do { cout << "l: links, r: rechts, q: quit. Ihre Engabe: ? "; cin >> eingabe; if (eingabe == 'l') { cout << text << endl; } if (eingabe == 'r') { cout << text << endl; } } while (eingabe != 'q'); system("pause"); return 0; }
-
Schau mal in deinem Buch oder deinen Unterlagen (sieht für mich nach einer Übungsaufgabe aus), nach wie man mit Strings arbeitet. Dann wird sich dein Problem lösen.
-
@Lilly sagte in zeichen im String bewegen:
text.at(0) = '*';
Mal abgsehen davon dass du die Exception die
at()
werfen könnte nirgends fängst (was du vermutlich solltest)...
Damit hast du jetzt das erste Zeichen des Strings überschrieben. Wenn du den*
danach im String verschieben willst ist das doof, weil du das 1. Zeichen ja überschrieben hast, und daher nicht mehr weisst was vorher dort stand.
-
wie überdecke ich ein zeichen im String denn ohne es zu überschreiben also zu "vergessen"?
-
@Lilly sagte in zeichen im String bewegen:
wie überdecke ich ein zeichen im String denn ohne es zu überschreiben also zu "vergessen"?
Was heißt denn überdecken? Du kannst im String Zeichen einfügen, entfernen und überschreiben. Wenn du noch mehr Funktionalität willst, musst du die selber programmieren
-
@It0101
aber wie mache ich das, dass das überschriebene zeichen nach der erneuten eingabe von l wieder da ist?
-
@Lilly
Du könntest eine zusätzliche Variable einführen und vor dem Überschreiben das alte Zeichen speichern.
-
@Lilly Das ist ein Algorithmus, den du schön mit Scrabble-Steinen durchspielen kannst.
Du musst dich genau dabei beobachten, was du dabei machst (welche Steine du wohin schiebst, welche Annahmen du machst).
-
Ich würde den eingegebenen String überhaupt nicht ändern.
Einfach nur die Position merken und dann substr(0, pos) + "*" + substr(pos+2) ausgeben.
Gültigkeit von pos natürlich noch beachten.