Datei Zeilenweise auslesen ok... Aber ich bekomme s nicht in ein Array

FBIagent

Erfahrenes Mitglied
Wie im Betreff scon gesagt ich lese eine Datei ein (mit mehreren Zeilen).
Das funktioniert auch ganz gut. Nur Wie bekomme ich das in ein string array?
Ich habe schon einiges ausprobiert aber nchts hat geklapt... naja hier mal der Code:

Code:
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;

int main()
{
  string row;
  ifstream file("configs.txt");

  while(getline(file,row))
    cout << row << "\n";

  getch();
  return 0;
}

Die Textdatei kann immer eine andere Zeilenanzahl haben.
Wie bekomm ich jede einzelne Zeile nun in ein Array, dass z.B. str_array[0] Zeile 1 ist,
str_array[1] Zeile 2 ist?

Also anstatt die Zeilen auszugeben sollen sie in ein Array gepackt werden.

THX im Vorraus
MFG FBIagent
 
Zuletzt bearbeitet:
Hallo,

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

using namespace std;

int main(){
    string row;
    vector<string> rows;
    ifstream file("configs.txt");

    while(getline(file,row)) rows.push_back(row);

    cout << "File content: " << endl;

    for(int i = 0; i < rows.size(); i++) cout << rows[i] << endl;
}

Siehe auch:
http://cppreference.com/cppvector/
 
Eine frage hab ich aber noch was hat in dem zusammenhang vector genau zu sagen?
EDIT:
Okay hat sich erledigt hatte was übersehen...
 
Zuletzt bearbeitet:
Moin,

also ich hatte heute erst Zeit das zu testen...

Naja auf jeden fall funtzt es ned ich hab bisl rumprobiert aber es will einfach nicht.
Es sieht auf jeden fall so aus als ob garnichts aus der Datei configs.txt gelesen wird:

main.cpp
Code:
#include <iostream>
#include <fstream>
#include <vector>
#include <conio.h>

using namespace std;

int main(){
  string row;
  vector<string> rows;
  ifstream file("configs.txt");

  while(getline(file,row))
    rows.push_back(row);
  
  cout << "File content: " << endl;
  for(int i=0;i<rows.size();i++)
    cout << rows[i] << endl;
  
  getch();
  return 0;
}

configs.txt
Code:
# Hostname/IP, Port
hostIP=127.0.0.1
port=3306

# MySQL login infos
usr=select_only
pwd=

Also es gibt keinen Fehler und Ausgegeben wird auch nichts.

THX im Vorraus
MFG FBIagent

EDIT:
Achne hab nen ganz dummen Fehler gemacht: Ich habe die Datei nicht configs.txt
benannt sondern conifgs.txt... das hat sich jetzt definitiv erledigt ;)

Meine nächste frage wäre wie ich Zeilenweise in eine .txt Datei rein schreiben kann.

THX im Vorraus
MFG FBIagent
 
Zuletzt bearbeitet:
Hi.
FBIagent hat gesagt.:
Meine nächste frage wäre wie ich Zeilenweise in eine .txt Datei rein schreiben kann.

Wenn du die Zeilen aus deinem Vektor wieder in eine Datei zurückschreiben willst, geht das z.B. so:
Code:
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
#include <iostream>
...
copy (vec.begin(), vec.end(), 
      ostream_iterator<string>(ausgabe_datei, "\n"));

Gruß
 
FBIagent hat gesagt.:
Ja und wie lasse ich die Datei in die ich schreiben will beim öffnen erstellen?
Code:
ofstream ausgabe_datei("datei.txt");

Ein ofstream erstellt die Datei wenn sie noch nicht existiert (wenn möglich -> Stichwort Zugriffsrechte) bzw. löscht den Inhalt der Datei wenn die Datei bereits existiert.

Es gibt da auch verschiedene andere Kombinationen von Flags die man optional als 2ten Parameter beim Konstruktor angeben kann. Siehe http://www.rafb.net/efnet_cpp/tutorials/iostream_openmode.html.

Gruß
 
Zurück