String durchsuchen

trolly

Mitglied
hi, habe einen std::string den ich durchsuchen möchte....

dort sind die zeichen immer durch ein komma getrennt, möchte dann komma für komma auslesen und den wert zwischen den beiden kommata in einen anderen string speichern....

jetzt die frage, wie würde das aussehen den inhalt vom komma bis zum nächsten komma auszulesen?

Danke.
 
Zuletzt bearbeitet:
Hi.

Bitte achte auf die Netiquette, insbesondere Punkt 15. Danke.

Dann hat dieses Forum eine hervorragende Suchfunktion mit denen sich viele Themen finden lassen die genau auf dein Problem passen.

Ansonsten solltest du dir mal die std::string Klasse in einer Referenz anschauen. Diese besitzt einige praktische Methoden um Strings zu durchsuchen.

Gruß
 
Hi, werde es für den nächsten thread beachten..

Kannst du mir die funktionen aufzählen welche ich aus std::string benötige?

std::string::find schonmal richtig? Oder gar einen kleinen beispiel code. danke.
 
Was suchste dann in nem forum wo man anderen hilft? Wenn jeder alles selber wissen würde, würde es das forum hier garnicht geben und immer auf andere seiten verweisen ist auch nicht die beste idee.

Warum kein lerneffekt? Man lernt welche funktionen man brauch, wie man sie benutzt, wie man sie später noch gebrauchen kann?

Verstehe dich nicht sorry.
 
Ich denke mal, er meint vorwiegend, das du dich sehr lern-resistent gegen die Netiquette benimmst. Vielleicht versuchst du wenigstens, Groß-/Kleinschreibung zu beachten. Ich sehe ehrlich gesagt nicht ein, warum das so schwer sein sollte. Schließlich haben wir alle Deutsch in der Schule gehabt.

Zu deinem Problem:

C++:
#include <iostream>
#include <string>
#include <vector>

using namespace std;

void StringExplode(string str, string separator, vector<string>* results)
{
    int found;
    found = str.find_first_of(separator);
    while(found != string::npos)
    {
        if(found > 0)
        {
            results->push_back(str.substr(0,found));
        }
        str = str.substr(found+1);
        found = str.find_first_of(separator);
    }
    if(str.length() > 0)
    {
        results->push_back(str);
    }
}


int main(void)
{
    string myString = "a,b,c,d";

    vector<string> myValues;

    StringExplode(myString, ",", &myValues);

    vector<string>::iterator myValue;

    for(myValue = myValues.begin(); myValue != myValues.end(); myValue++)
    {
        cout << *myValue << "\n";
    }

    return 0;
}
 
Danke an alle...
Wollte jetzt keinen neuen thread aufmachen ... Habe in meinem string einige unsigned chars ... sowas wie 0x20 etc... wie kann ich die aus dem string jetzt in ein unsigned char kopieren? die richtige stelle im array wo die zahl drinne liegt habe ich, aber hab versucht ihn in nen unsigned char zu casten, aber dann bekomme ich nur komische zeichen zurück.

sowas in der richtung:

unsigned char uc = (unsigned char) teststring.c_str();

Im string habe ich die 0x20 drinne, aber nachm casten geht sie sofort verloren...

Danke.
 
Tut mir leid, wenn ich jetzt bloed Frage. Du weisst was ein String ist und was ein char ist?

Ein String ist schlicht und ergreifend ein Chararray incl Abschluss-Ascii-0 ... also \0.

Bei deiner Annahme von grad eben fehlt etwas wichtiges ... die Zuweisung ist correct, allerdings wo spezifizierst du das Zeichen aus deinem String? oder besteht der String ausschliesslich aus deinem Zeichen?

Ganz nebenher frag ich mich gerade, weshalb ausgerechnet unsigned char notwendig ist?
 
Selbst die Zuweisung ist nicht korrekt. In C gibts Char und Char-Pointer. c_str() liefert einen Zeiger auf const char zurück. Das das eigentlich sowieso schon unsigned ist und ein Cast hier nicht notwendig, lassen wir mal außen vor.

Eine korrekte Zuweisung wäre dann also:

C++:
const char* c = teststring.c_str();

Da ja in der Regel konstante Strings unerwünscht sind, müsste man das dann noch so machen:

C++:
char *c = (char*)malloc(teststring.length()+1);
strncpy(c, teststring.c_str(), teststring.length());
 

Neue Beiträge

Zurück