Datei einlesen

2fast4you87 hat gesagt.:
Code:
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>


using namespace std;

int main(int argc, char *argv[])
{
   ifstream in ("test.hex");
   string str;

   in >> str; // das funktioniert 

   str.replace( r.find( "a"), strlen("a"), "b"); // das leider nicht ...

   in.close();    
   return 0;
}
Was ist denn r für eine Variable? Wo ist die definiert? Meintest du evtl. str.find("a")?
 
ja natürlich
Code:
str.find("a");

aber das funktioniert ja leider nich er findet wohl das erste a gibt da ne 13 zurück und bei strlen ne 1 ^^ aber ersetzt sie net mit einem x.
 
und wow is if und ofstream langsam kann man das schneller machen ?
// edit :
ok das replace funktioniert jetzt aber er ersetzt ja nur ein zeichen sprich ich brauche ja ne while() schleife die den kompletten strich durchläuft ...

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


using namespace std;

int main(int argc, char *argv[])
{
ifstream in ("test.hex");
string str;

in >> str;
int lang = 20;

while(lang !=0){
str.replace( str.find( "f"), strlen("f"), "q");
lang--;
}

cout <<str;

in.close();    
    return 0;
}

hätte mir das so gedacht, aber leider funktioniert das nicht, er compeliert wohl mit 0 Fehlern aber beim Ausführen kommt ein Fehler ...
 
Zuletzt bearbeitet:
die while könnte dann so aussehen..

Code:
while(str.find( "f") != -1) // find gibt nen Wert zurück ob der string gefunden wurde
{
     str.replace( str.find( "f"), strlen("f"), "q");
}
MfG Turri
 
so letzte frage :rolleyes:

ich habe nen String str3;

wie bekomme ich den mit out den jetzt in die datei geschrieben ?

Code:
ofstream out("test.txt");
string str3 = "test";
out << str3;

die while schleifen die hier in euren codes waren, kann ich ja nicht gebrauchen. Denn sie beziehen sich ja auf das ifstream in ...

LG ...
 
Code:
ofstream out;
out.open("test.txt", ios::out | ios::app);    //ios::app heisst wenn noch was kommt wird der Inhalt am Ende der datei speichert ohne den Inhalt zu löschen
if(out.good())
{
     string str3 = "test";
     out << str3;
}
out.close();
Meinst du das?

MfG Turri
 
Zuletzt bearbeitet:
@deepthroat

Ich weiß, dass man normalerweise int main(void) schreibt nur für diesen 5 min - Hack hab ich das dann nicht mehr korrigiert...

Code:
5.1.2.2.1 Program startup

The function called at program startup is named main. 
The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent; or in some other implementation-defined manner.

soweit der C99 Standard dazu...

lg
Johannes
 
Dieser Code braucht für 1 mb nur ungefähr 10 sec.
er wandelt die datei in hex um.
Code:
#include <fstream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>


using namespace std;

int main(int argc, char *argv[])
{


        ifstream in("test.jpg", ios::in | ios::binary);
    ofstream out("vs.jpg");
    
    if (!in.is_open() || !out.is_open()) return 1;
	
    out << hex << setfill('0');
    
int c;
while (out && (c = in.get (), in)) {
  out << setw (2) << c;
}




	    return 0;

}


dieser Code nimmt den hex code der in der datei vs.jpg drinne is und soll ihn in ein string
packen und dann einfach speichern , ne kopiern also aber er ist nach 5 min immer noch nicht
fertig ...

hat jmd na ahnung warum ?

Code:
#include <fstream>
#include <iomanip>
#include <string>
#include <sstream>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[])
{
ifstream in("vs.jpg", ios::in | ios::binary);
//ifstream in ("test.hex");
ofstream out;
out.open("test2.jpg", ios::out | ios::binary);    

string str,str1,str2,str3;

if (!in.is_open() || !out.is_open()) return 1;

in >> str;

int u = 1;

while (u!=0){
  out << str;
  u--;
}





in.close();
out.close();    
    return 0;
}
 
Hi.

Ich nehme an, das die Datei vs.jpg auch wirklich eine JPEG Datei ist, ja? Dann kannst du die Datei nicht so einfach in einen String speichern, denn die Datei enthält Leerzeichen und andere nicht-druckbare Zeichen die nachher auf der Ausgabe vermutlich dazu führen das das Programm nicht weiterläuft.

Code:
  int length;

  // Groesse der Datei bestimmen:
  in.seekg (0, ios::end);
  length = in.tellg();
  in.seekg (0, ios::beg);

  char* buffer = new char[length];

  if (in.read (buffer, length)) {
    // 1. Möglichkeit - an einen String zuweisen und ausgeben.
    str.assign (buffer, length);
    out << str;
    // -----------------------------------
    // 2. Möglichkeit - einfach den Buffer gleich ausgeben.
    // out.write (buffer, length);
  }

  delete[] buffer;

Wenn du die komplette Datei in den Speicher liest, dann brauchst du bei er Ausgabe der ganzen Daten natürlich keine Schleife.
 

Neue Beiträge

Zurück