C++: std::string ab bestimmten Zeichen abschneiden?
Hallo, ich habe in C++ einen std::string der beispielsweise dem Wert "Test ; 123" hat. Ich brauche nun eine Möglichkeit wie ich ab dem Zeichen Semikolon von einem String die darauffolgenden Zeichen und das Semikolon entfernen kann. So dass der String aus meinem Beispiel am Ende so aussieht: "Test"
Wie kann ich das erreichen?
LG
4 Antworten
abc = "Test;123";
abc1 = abc.substr(0, abc.find(";"));
// abc1 = "Test";
Es gibt hier diverse Varianten, je nachdem was Dein weitere Plan mit dem String ist.
Wenn wir es bei den Methoden von std::basic_string belassen, dann kannst Du verwenden:
std::string::resize
std::string::substr
std::string::remove
std::string::erase
Ich habe da mal ein ähnliches Beispiel dazu geschrieben:
// Zweck: string Wert links und rechts von einem Trennzeichen splitten
// Pfad: stringlire.cpp
#include <stdlib.h> // für die String-Konvertierung
#include <iostream>
#include <string>
#include <sstream> // Stringstream
#include <iomanip> // für cout Formatierung
using namespace std;
// Globale Variablen
int zaehl=0, strl, slang, spos;
string surspr, sli, sre, sbem;
double ref1, ref2, ref3;
// Funktion konvdoubleF
// ++++++++++++++++++++
float konvdoubleF()
{
// Splittung durchführen
// ++++++++++++++++++++++
slang = surspr.length(); // Stringlänge ermitteln
spos = surspr.find(","); // Position wo Dezimalkomma ist erm.
sli = surspr.substr(0, spos); // links vom Dezimalkomma in String
sre = surspr.substr(spos+1, 2); // rechts v. Dezimalk. in String
istringstream inStreaml(sli); // aus String Inhalt links
cout << "links | rechts: "<< " " << sli << " | " << sre << endl;
inStreaml >> ref1; // Zahl erzeugen
istringstream inStreamr(sre); // aus String Inhalt rechts
inStreamr >> ref2; // Zahl erzeugen
cout << "vork-li | nachk-re: " << ref1 << " | " << ref2 << endl;
ref3 = ref1 + (ref2 * 0.01); // Zusammenführen Stunden/Min.
sbem = "Neuer Wert:";
cout << sbem << " " << ref3 << endl;
printf("%11s %-15.2f \n",sbem.c_str(), ref3);
cout << "-----------------------------------" << endl;
return ref3;
}
int main()
{
cout << "-----------------------------------" << endl;
surspr = "1010,85";
cout << "Ursprungs-Wert:" << surspr << endl;
cout << "-----------------------------------" << endl;
konvdoubleF(); // Funktionsaufruf
cout << "-----------------------------------" << endl;
surspr = "8765,43";
cout << "Ursprungs-Wert:" << surspr << endl;
cout << "-----------------------------------" << endl;
konvdoubleF(); // Funktionsaufruf
return 0;
}
https://www.cplusplus.com/reference/string/string/
mit substr. Und find, falls du die Stelle mit dem ; zur Laufzeit bestimmen möchtest.