String aus Integern getrennt durch Komma

gwaan

Mitglied
Hallo ich habe folgengen String:

a = "3,1,3,1,5,10,"

Ich würde gerne den String so zerlegen, dass ich die durch kommagetrennten Werte einzeln habe und sie vom Typ integer sind.
Also int a = 3; int b = 1; int c = 3 usw...

Kann mir da jemand helfen? Ich komme echt nicht zurecht :-(
 
Bitte etwas genauer in der Angabe des Compilers und der verfügbaren Bibliotheken.

Die Funktionalität nennt sich string-split oder string-tokenizer und wird mit unterschiedlichen Includes anders eingesetzt.

String-Split für .NET C++ : http://msdn.microsoft.com/library/d...ref/html/frlrfsystemstringclasssplittopic.asp

STL String Tokenize (Punkt 7.3) : http://oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html

C-Funktion für Char-Arrays: strtok()

Problem-Erklärung und Lösung für STL: http://www.thecodeproject.com/string/stringsplit.asp
 
ich programmiere mit dev c++. ich habe es gerade mit SpringSplit versucht aber ich bekomme die Fehlermedlung "First use in this Function"! ich habe die Klasse string included wie kann sowas sein...? Mit dem Tokenizer genau das selbe...
 
Zuletzt bearbeitet:
Hi

wie schaut's mit strtok() aus? Die schon probiert?

String.Split() funktioniert nur unter .Net (hatte Thomas aber bereits erwähnt). Ich nehm mal an, dass du aber unter Win32 programmierst und da gibt es diese Funktion nicht.

Wegen der Tokenize Methode:
Zeig doch mal deine Code her, vielleicht ist da der Fehler zu sehen.
 
Hi danke für die Hilfe! Ja ich arbeite unter Win32. Die Funktion tokenizer wird erst gar nicht erkannt... strtok scheint er zu kennen aber es funktioniert auch nicht

Meine Code sieht so aus:
Code:
#include <string>
#include <algorithm>
#include <vector>



using namespace std;

int main()
{
    string str ="1,2,3,4,5,6";
    string delim =",";
    int wert;    
    string.strtok(str,delim);
}


hab das mit dem strtok() auch nicht hinbekommen. Wäre über Hilfe wirklich sehr dankbar
 
alles klar! danke für die hilfe. hab was gefunden. funktioniert auch. nun habe ich folgendes problem:

das funktioniert ->
Code:
char String[] = "1,2,3,4,5,6"; 
char* pToken = strtok(String, ",");


aber so wie ich das brauche geht es nicht. ich habe doch einen string und keine chars.

string a = "1,2,3,4,5,6";
char String[] = a;//hier meckert er
char* pToken = strtok(String, ",");


wenn ich es so mache:

string a = "1,2,3,4,5,6";
string String[] = a;
char* pToken = strtok(String, ","); //meckert er hier und statt char* string* schreiben, darf mann ja nicht



oh mann ich sitze jetzt schon seit 2 abenden vor dem problem und komme echt nicht weiter. hat doch einer mitleid... :confused:
 
Hallo,

das mit dem strtok funktioniert nicht, da du versuchst der strtok Funktion
welche einen char* erwartet einen stl string zu uebergeben versuchst...

Probiers mal so:

Code:
#include <iostream>

using namespace std;

int main()
{
    string s = "1202,212,23,54,35";
    string::size_type pos = 0;
    string delimiter = ",";
    do{
        string number = s.substr(pos, s.find(delimiter, pos) - pos);
        cout << number << endl;
    }while((pos = s.find(delimiter, pos))++ != string::npos);
    return 0;
}

Gruß

RedWing
 
Zuletzt bearbeitet:
Zurück