C++: std::string ab bestimmten Zeichen abschneiden?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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;

}