C++ String gibt ein Zeichen zuviel aus

Hey leute,
guten "Morgen" ^^

ich hab mal ne Frage habn Prog geschrieben was in eine Datei einen String schreibt. Dieser String ist aus mehreren "Posten" zusammen gesetzt. Diese sind getrennt durch ein |. Jedoch gibt er mir am ende das | noch mit aus. wie kann ich das umgehen?

Code:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void main()
{	
	string lol="123456?|AMD|29.95", outd;
	char ch=' ';
	int i;
	
	ofstream out("artikel.con");
	out<<lol;
	out.close();
	ifstream in2("artikel.con");
	in2.seekg(0,ios::beg);
	cout<<"\n\tDie Artikelnummer ist: ";
	while(!in2.eof())
	{
		ch=in2.get();
		outd=outd+ch;
		if(ch=='\x7C') break;
		cout<<ch;
	}
	cout<<"\n\tDie Artikelnummer ist: "<<outd;
	in2.close();

	ifstream in1("artikel.con");
	in1.seekg(0,ios::end);
	streampos sp=in1.tellg();
	cout<<"\n\tDie groesse der Datei betraegt: "<<sp<<" Bytes"<<endl<<flush;
	in1.close();
}

Hiern Screen:
datei.jpg
 
Einfach das | löschen ;)
Code:
outd.erase(outd.find("|"),1);
 
Löschen ist Pfusch. ;-)

Wenn du auf Trennzeichen parsed und sie nicht zum Eintrag gehören, solltest du sie auch nicht zum Eintrag hinzufügen. Also erst schauen ob es ein Trennzeichen ist und nur hinzufügen falls es keins ist.
Z.B. so
Code:
while(!in2.eof())
{
   ch=in2.get();
   if(ch=='\x7C') break; //sondern hier
   outd=outd+ch;
  //nicht hier: if(ch=='\x7C') break;
  cout<<ch;
}
 
Wenn man nicht so auf zeichenweises einlesen steht:
Code:
istream& getline (istream& is, string& str, char delim = '\n');
ließt also immer einen string bis zum "delim"-zeichen (welches dann nie im string ist).

Abstauber, warst schon lange nichtmehr im irc :rolleyes:
Aber wir du ja schon gemerkt hast, ist ein Leerzeichen als Trenner nicht optimal... und nimm einen string für die Hausnummer ;)
 
Danke für eure Hilfen :)
@Lagaloplex: Naja hatte wenig Zeit war kaum zuhause. Naja Stress @ home usw. du verstehst schon.... aber ich lass mich mal wieder blicken :)

Aber wir du ja schon gemerkt hast, ist ein Leerzeichen als Trenner nicht optimal... und nimm einen string für die Hausnummer

Hast Recht da Hausnummern ja auch 3a usw. sein können hatte da nimmer dran gedacht weil bei uns in unsrem Dorf gibbet sowas net ^^

Gibts da vllt auch eine bestimmte Methode um in einer Datei nach einem bestimmten String oder nach Chars zu suchen sowas wie in.find('Kundennummer')?
 
direkt nicht, aber wenn du die Daten eingelesen hast, kann man sie ja zB in einer list speichern, und die kann man dann auch recht einfach durchsuchen :)
 
Zurück
Oben