String auf Konsole ausgeben

L

linuxneuling84

Hallo zusammen,

ich bin auf ein Problem gestoßen dass für mich sehr unverständlich ist, aber vllt übersehe ich auch etwas Offensichtliches.

Es geht darum eine Text-Datei einzulesen und diese auf der Konsole aus zu geben, eigentlich ganz einfach. Folgenden Code habe ich getestet:

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


using namespace std;


int main(int argc, char** argv) {
  
  fstream is;
  is.open("filestring.txt"); // open a file stream
  string line;

  is >> line;
  cout << "This is a test string" << endl;
  cout << line << endl;

  return 0;
}

Ich bearbeite dies in NetBeans und dort funktioniert alles, d.h. die Ausgabe ist der test String und ein Wort aus der filestring Datei.
Wenn ich dies jetzt aus dem Linux Terminal starte bekomme ich zwar den test String aber danach folgt eine Blankline, also nur "endl" wird richtig behandelt.

Mit anderen Worten es muss einen Unterschied geben zwischen einem im Code erzeugten String und einem String der aus einer Datei eingelesen wurde.
Ich würde mich freuen wenn mir jemand hiermit weiterhelfen könnte.

Gruß Linuxneuling
 
Hallo linuxneuling84,

das Thema ist zwar schon ein Wenig älter, aber ich habe mir deinen Code trotzdem mal angesehen und mir sind einige Dinge aufgefallen:
  1. Du hast vergessen, die Datei wieder zu schließen. Das sollte man immer tun: is.close ()
  2. Der Operator >> nach fstream speichert leider nicht die erste Zeile, sondern nur das erste Wort bis zum Leerzeichen in line.
  3. Vielleicht hilft es, wenn du in der is.open Funktion auch gleich den Modus ios::in angibst.
Insgesamt sieht das dann so aus:
Code:
#include <fstream>
#include <iostream>
#include <string>


using namespace std;


int main(int argc, char** argv) {
 
  fstream is;
  is.open("filestring.txt", ios::in); // open a file stream
  string line;

  getline (is, line);
  cout << "This is a test string" << endl;
  cout << line << endl;
 
  is.close ();

  return 0;
}

Versuch mal, ob das funktioniert.

Grüße,
Pik-9
 

Ähnliche Themen

Funktion nicht gefunden

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Problem mit Texteingabe

deprecated conversion from string constant to ‘char*’

dynamische Speicherreservierung

Zurück
Oben