neue Zeile zwischen 2 bestehende einfügen ?
-
Die Datei sieht folgendermaßen aus:
FT /gene_id="IGI16982646" FT /locus_tag="Lcho_4083 {UniProtKB/TrEMBL:B1XWY6}"Davor und danach sind noch mehr andere Infos gespeichert.
Ich möchte nun zwischen diese zwei Zeilen eine neue Zeile einfügen.So sieht mein Code im Moment aus:
char buffer3[500]; string meta_cstring; fstrm2.open(argv[1], ios::out | ios::in | ios::app ); while(!fstrm2.eof()){ //Datei Zeile für Zeile einlesen fstrm2.getline(buffer3,500); position = fstrm2.tellg(); meta_cstring = buffer3; //find gene_id needle1="/gene_id="; needle2='"'; found1 = meta_cstring.find(needle1); if(found1!=std::string::npos){ found1 = found1+10; found2 = meta_cstring.find(needle2,found1); length2 = found2-found1; length = meta_cstring.copy(buffer,length2,found1); buffer[length]='\0'; //find the corresponding gene in array for(int i=0;i<numberOfGenes;i++){ if(buffer == genes[i].getGene_id()){ string test2; stringstream NumberString; NumberString << genes[i].getGcbScore(); string Number = NumberString.str(); //Diese Zeile soll eingefügt werden test2 = "\nFT /gcb=\"" + Number + "\"\n"; int lengthTest2; //seqan length gibt die Länge des strings zurück lengthTest2 = seqan::length(test2); fstrm2.seekp(position); fstrm2.write(test2.c_str(),lengthTest2); fstrm2.seekg(position); } } } }Mit ios::app wird die neue Zeile einfach ans Dateiende angefügt, warum funktioniert hier seekp() nicht ?
Ohne app wird an der Stelle "position" in der Datei einfach überschrieben.
Edit: müsste ich wirklich nach jeder neuen Zeile die ich Schreibe, alle anderen verbleibenen neu schreiben "um eins nach unten versetzt" ? (hoffe das ist verständlich)Edit2: hat sich erledigt, ich öffne einfach eine 2te Datei in welche ich alles neuschreibe.