[C/C++] Letzten Wert des Strings auslesen

floppe

Ensign
Registriert
Sep. 2005
Beiträge
186
HUHU!


Kann mir wer ein kleines Beispiel schreiben, bei dem der letzte Wert ausgelsene Wird.


Beispiel:

Eine Eingabe die mit einem "." endet soll abgefangen werden diese Eingabe steht jedoch mit in einem String "Hallo.".

Mit String meine ich einen string ala c++ nicht einen c string aus einem Array von Chars ;)


mfg
 
Code:
std::string s = "Hallo."; // der String
std::string::value_type c = '.'; // das boese Zeichen
...


if( !s.empty() && *s.rbegin() == c) { // reverse iterator anfordern
  // irgendwas tun
}

Alternativ kann man auch mit find_last_of o.ä. arbeiten.
 
7H3 N4C3R schrieb:
Code:
std::string s = "Hallo."; // der String
std::string::value_type c = '.'; // das boese Zeichen
...


if( !s.empty() && *s.rbegin() == c) { // reverse iterator anfordern
  // irgendwas tun
}

Alternativ kann man auch mit find_last_of o.ä. arbeiten.


Guter Ansatz jedoch prüft er ja nur auf diesen "." jedoch kann in einem Satz ja acuh sowas vorkommen: "Hallo. Mein name is Egbert." deshalb werd ich mal alternativ find_last_of ansehen @ google :)

Ansonsten find ich andere Lösungen natürlich interessant :)
 
Es geht nur darum, dass kein "." am ende des strings existieren darf!
 
Lösung:


Code:
#include <string>
#include <iostream>
using namespace std;

int main() {
	string strTest;
	int i;
          
          .... // irgendwie irgendwas in die Variable einlesen
          
          cout << endl << strTest.length() << endl; //Gibt die Länge des Strings an
             i = strTest.length(); //uebertragt die Länge in eine  temporäre Variable
             i = i - 1; // -1 weil array beginnt mit 0 ;)
             cout << strTest[i] << endl << endl; //gibt den Wert an der letzten Stelle des Arrays aus	
     	     
	  	     if(strTest != "." ){       // Wenn strTest an der letzten Stelle keinen . hat ...
	  	              strTest = strTest.append("."); // ... wird er eben dran gemacht :)
	  	              cout << strTest << endl; // final Ausgabe 
             }
             else{
                           //sonstiger Ablauf
                  
                  ...
                  }
}
 
Uh und was macht deine Lösung anders floppe, außer dass sie bei einem Leerstring abstürzt?

Zumal es != '.' heißen müsste. != "." sollte nicht kompilieren.

Ist ja net bös gemeint, sieht nur nach einem riesen Batzen Code aus, obwohl die Aufgabe viel einfacher ist.
 
string s = "Hallo."

if (!s.empty() && s.substr(s.size() - 1, 1 ) != ".")
s = s + ".";

alternativ:

if (s.empty() || (!s.empty() && s.substr(s.size() - 1, 1 ) != "."))
s = s + ".";

@floppe, wenn du weiter so kompliziert umsetzt, würde ich mein heil in der Philosophie suchen :)
 
Zuletzt bearbeitet:
Sorry das ich mich mit der Bearbeitung von Strings nicht so gut auskenne, weshalb ich diesen Post gemacht habe. (eventuell um was neues zu lernen) Da is dein Kommentar unangebracht. Ich versuch jediglich erstmal mein Problem zu lösen, dann die ganze Sache zu verschoenern.

Außerdem ist es egal ob es " oder ' ist
genauso funktioniert auch strTest ohne das Array hinten dran
Das mit der Länge stimmt zwar funktioniert aber obwohl ich soetwas ähnliches nie gemacht habe.
Und bevor ihr belustigende Kommentare zu anderer Leuten Quelltext macht die vorher danach gefragt haben solltet ihr erstmal nachdenken warum er fragt.

Trotzdem danke.


PS: Nein ich bin nur manchmal kolerisch :freak:
 
Nix für ungut. :) Wollte dir doch auch net auf den Schlips treten. :)

Und selber ausprogrammieren und selber lernen ist auch die beste Variante. Ich hatte es nur so verstanden, dass du einfach nur ein Beispiel willst. :)

Eddit:
Und Kritik soll nicht belustigend sein sondern konstruktiv, auch wenn es vielleicht ein wenig harsch geklungen hat. Ich habe doch mal genauso angefangen.
 
Zuletzt bearbeitet:
Zurück
Oben