Gå til innhold

Hjelp: fstream, filoperasjoner


Anbefalte innlegg

Jeg skal skrive ut en del informasjon i programmet mitt til en ekstern fil, men sliter litt med dette. Problemet mitt er vel at uansett hva jeg gjør så kommer alt jeg skal skrive på slutten av filen. Jeg ønsker å skrive informasjon forskjellige steder i en ekstern fil, som allerede inneholder annen informasjon.

 

Filen åpnes med disse tagsene: "fstream::in | fstream::out | fstream::app"

(Noen forskjell mellom fstream::in og ios::in?)

Jeg har også prøvd med fstream::ate.

 

Jeg bruker seekp() funksjonen til å posisjonere skrivepekeren, men uansett hvor denne er plassert så kommer det jeg skrive til filen altid på slutten.

 

Noen som har noen forslag til løsning?

Lenke til kommentar
Videoannonse
Annonse

Har du prøvd følgende:

 

std::ofstream out("myfile.txt", std::ios_base::out | std::ios_base::in | std::ios_base::ate);

 

Det skal fungere.

 

 

Edit:

 

Hos meg var konstantene i fstream og ios_base de samme (og jeg vil tro de skal være det). Må være noe annet feil med koden din. Her er et lite eksempel jeg satte opp i farta:

 

#include <iostream>
#include <fstream>
#include <string>


int main()
{
 std::ofstream out("myfile.txt");
 out << "123456789";
 out.close();

 out.open("myfile.txt", std::ios_base::out | std::ios_base::in | std::ios_base::ate);
 out.seekp(-3, std::ios_base::cur);
 out << "***" << std::endl;
 out.close();

 std::ifstream in("myfile.txt");
 std::string str;
 in >> str;
 std::cout << str << std::endl;
}

Endret av kjetil7
Lenke til kommentar

takker :D

Tok sin tid før jeg fant ut hva jeg gjorde feil... Problemet lå i at jeg brukte out.write();

 

Så til neste spørsmål, finnes det en måte å sette inn tekst uten å erstatte det som står der allerede, bortsett fra flytte teksten manuelt?

 

edit: Har ihvertfall lagd meg en loop for flytting av tekst, mer er allikavel interressert i å vite om det eksisterer en måte å sette inn tekst uten å erstatte.

Endret av MapSter
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...