PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++ string & leerzeichen



jonasge
27-12-2002, 17:30
Hallo!

Ihr seit meine letzte hoffnung, das der code dochnoch läuft...

Code jetzt schon seit 2,5 stunden rumm und komme zu keinem ergebnis.

Ich habe ein string temp; dieser string sieht etwa so aus:
" 1 hallo die"
jetzt will ich, das die leerzeichen am anfang des sting gelöscht werden, aber das andere soll bleiben:
"1 hallo die" Wenn ich das mit istrstream versuche, dann sieht der string danach so aus:
"1"
Jedoch ich will nur, das die vorderen leerzeichen abgeschnitten werden...

Ich habe schon im I-net gesucht, aber nur irgendwas mit "ws" gefunden, aber dazu finde ich keine hilfe...

WIe kann ich das machen??

Gruss

Jonas

P.S Hier der code der fehlerhaft ist(er schneidet zu viel ab..)


ifstream file(filename);
if (file)
{
while(file)
{
getline(file, zeile);
int pos = zeile.find(":");
if (pos > 0) {
key =zeile.substr(0,pos);
temp =zeile.substr(pos+1);


istrstream is(temp.c_str());
is >> value;
cerr << "Temp: "<< temp<< endl;
cerr << "Nach is "<< value<< endl;
listview_[number]->insertItem(new QListViewItem(listview_[number],key.c_str(),":", value.c_str()));
}
}
file.close();

micha
27-12-2002, 19:31
Hi,

zu Deinem eigentlichen Problem hab ich keine Lösung (nicht geschaut), da sich hier doch die Qt-Klassen geradezu aufdrängen ;)
Damit könnte es z.B. so aussehen:



QFile file (filename);

if (file.open (IO_ReadOnly))
{
QTextStream stream (&file);
QString line;
int num = 1;

while ( ! stream.eof ())
{
QString key, value;
int pos;

line = stream.readLine ();
pos = line.find (':');

if (pos < 0) {
qWarning ("syntax error in line %i", num);
continue;
}

key = line.left (pos++);
value = line.mid (pos, line.length());
value = value.stripWhiteSpace ();
/*oder: value.simplifyWhiteSpace ();*/
qDebug ("line %i: key -> '%s', value -> '%s'", num, key.latin1(), value.latin1());
listview_[number]->insertItem(new QListViewItem(listview_[number],key,":", value));
num++;
}

file.close ();
}
else
{
qWarning ("file open error.");
}


Gruß micha

jonasge
27-12-2002, 19:42
Hallo micha !!

:)
Manchmal sieht man den Wald nicht mehr vor lauter Bäumen...

Man bin ich dämlich, liegt ja auf der Hand, und ich habe in der gleichen app die funktion schon benützt...

Warum bin ich da ned selber draufgekommen...
Hier der endgültige code: (habe qt jetzt mit c++ vermischt)


void procviewer::slotreadfile(int number, char *filename)
{
map<string, string> file_map;
string zeile;
string key;
QString value;
//create TAB:
slotsetview(number,filename);

ifstream file(filename);
if (file)
{
while(file)
{
getline(file, zeile);
int pos = zeile.find(":");
if (pos > 0) {
key =zeile.substr(0,pos);
value = zeile.substr(pos+1).c_str();
value = value.stripWhiteSpace();

listview_[number]->insertItem(new QListViewItem(listview_[number],key.c_str(),":", value));
}
}
file.close();


Gurss
und vielen Dank
JOnas