PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++ string variable auftrennen



Tuxist
14-02-2007, 20:30
Moin suche eine möglichkeit werte in einem string einzeln auszugeben.

Folgen scenario:



string blah;
string = "blub, blub1 ,blub3"; // anzahl werte kann vesrchieden sein
string blabla;
blabla = "moin" ;
string blabla2;
blabla2 = "moinmoin"
cout << blabla << // erste string variable // << blabla2 << blaba<<zweiter wert // << blabla2 << usw


das problem dabei ist das die anzahlt der übergebenden variable verschieden seinkönnen .

orginal code
ftp://tuxist.de/tuxist/tuxcms/lib/libhtml++/

mfg Tuxi

anda_skoa
15-02-2007, 15:36
Bitte versuche ein konkretes Beispiel für so einen Inputstring zu posten, d.h. wo man sieht wie die Trennzeichen oder Trennstrings ausehen, welche Zeichen in den Werten vorkommen können, etc

Ciao,
_

Tuxist
15-02-2007, 15:44
inputstring beispiel
formselect("Formselect1", "Forminput, Forminput1, Forminput2");

Tuxist
15-02-2007, 16:19
index.cpp


formselect("Formselect1", "Forminput, Forminput1, Forminput2");


libhtml++


void formselect(std::string formselectname, std::string formselectinput)
{
string formselectinputprint;
formselectinputprint = formselectinput.insert( 0,"<option>");
cout << "<select name=" << "\n" << formselectname << "\n" << formselectinputprint << ">" << endl;
};


Ich hätte nun gerne keine statischen wert bei insert sodern im anfang eines Teilstrings und am ende hätte ich gerne </option>

anda_skoa
15-02-2007, 18:44
Wenn du keine Leerzeichen in den Einzelteilen hat, kannst du einfach mit einem stringstream arbeiten.

Den Input reinschreiben (oder im Konstruktor übergeben) dann die Teile mit dem Stream Operator in string Variablen auslesen.

Ciao,
_

Tuxist
15-02-2007, 19:24
void formselect(std::string formselectname, std::string formselectinput)
{
string formselectinputprint(formselectinput);
int pos = 0;
do
{
pos = formselectinputprint.find("");
if(pos != string::npos)
formselectinputprint.replace(pos,strlen(""),"<option>");
}
while(pos != string::npos);

do
{
pos = formselectinputprint.find("");
if(pos != string::npos)
formselectinputprint.replace(pos,strlen(""),"</option>");
}
while(pos != string::npos);


cout << "<select name=" << "\n" << formselectname << "\n" << formselectinputprint << ">" << endl;
}


Habe Leerzeichen gegen und ausgetauscht