Lesen-Daten-Datei ins 2d-array in c++
Ich habe eine Textdatei mit 2 Spalten und vielen Zeilen. jede Spalte ist getrennt durch Leerzeichen. ich brauche zu Lesen, dass Sie ein 2D-array für die weitere Berechnungen.
meine Daten-Datei sieht wie
0.5 0.479425539
1 0.841470985
1.5 0.997494987
2 0.909297427
2.5 0.598472144
3 0.141120008
3.5 -0.350783228
4 -0.756802495
4.5 -0.977530118
5 -0.958924275
Und mein zaghafter Versuch ist
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <ctype.h>
using namespace std;
int main () {
char line,element;
std::ifstream myfile ("C:\\Users\\g\\Desktop\\test.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline(myfile,line);
cout << line<<endl;
_getch();
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
Das problem ist, ich bin nicht in der Lage, Sie Lesen richtig.... seine entweder das Lesen der ganzen Zeile... wenn ich geben Sie das Trennzeichen an, wie der 'Raum' dann, es ist nicht das Lesen der nächsten Zeile.
Pls hinweisen, was falsch ist. und was muss ich tun, um speichern Sie die Daten in das 2d-array für die weitere Berechnungen.
Danke
Ist Ihr Programm selbst zusammenstellen? Es gibt keine überladung von
Ich Habe bearbeitet den code jetzt ... Es tut kompilieren...
std::getline
, nimmt ein einzelnes Zeichen als zweites argument. Es gibt auch viele andere seltsame Dinge in Ihrem code, wie die Verwendung der logisches oder (die |
- operator), und die Eingabe-operator aus einem char
variable.Ich Habe bearbeitet den code jetzt ... Es tut kompilieren...
InformationsquelleAutor user2024645 | 2013-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den letzten for-Schleife zeigt, wie die Werte in den "array". Die variable Zeilen streng genommen nicht um ein array, sondern ein Vektor von Vektoren. Aber ein Vektor ist viel sicherer als die c-style-arrays und ermöglicht den Zugriff auf Elemente mit [].
[Als ich dies geschrieben, sah ich ein sehr ähnliches Programm geschrieben als Antwort. Ich schrieb mir unabhängig.]
std::ifstream f(argv[1]); std::string l; std::vector<std::vector<double> > Zeilen; kann u pls expalin mir dieses Teil.
Wenn Sie das Programm ausführen, geben Sie den Namen der Datei gelesen werden, als das erste argument.
Alternativ ersetzen
std::ifstream f(argv[1]);
mitstd::ifstream f("C:\\Users\\g\\Desktop\\test.txt");
std::ifstream f(argv[1]);
erstellt und öffnet eine input-file-stream für die Datei gegeben, als das erste Kommandozeilen-argument. Wenn Sie starten Ihr Programm in visual studio mit der rechten Maustaste auf das Projekt im Projektmappen-explorer, wählen Sie Eigenschaften->Konfiguration-Eigenschaften->Debuggen, und geben Sie den Namen der Datei, die Sie Lesen möchten, in das Feld "Argumente"InformationsquelleAutor user570500
Lesen Sie die ganze Zeile in eine
std::string
, dann verwenden Siestd::istringstream
zum extrahieren der Werte aus der Leitung.Einen kompletten Arbeitstag-Programm:
Gegeben, den Inhalt in die Datei, wie in der Frage, die ersten drei Zeilen der Ausgabe sollte sein:
Für ein 2d-array, das ich verwenden würde, ein
std::vector
vonstd::array
:Nun die erste Zeile Werte sind
array[0][0]
undarray[0][1]
, und die letzten Zeilen Werte sindarray[array.size() - 1][0]
undarray[array.size() - 1][1]
.Es ist ziemlich offensichtlich, dass Sie neu sind, schlage ich vor, Sie versuchen, mehr grundlegende Dinge zuerst. Inzwischen hatte ich ein bisschen genug zu schreiben, zu arbeiten (hoffe ich) Beispiel-Programm.
Danke, dass Sie so viel Pileborg... es funktioniert Prima... Jetzt muss ich zu geben, um ein 2d-array...pls gib mir ein Tipp...ich werde den rest tun...
Hinzugefügt einige Beispiel-code für Vektoren und arrays.
InformationsquelleAutor Some programmer dude
Als C++ hat sich im Laufe der Jahre, unten ist eine Moderne C++ - version.
.
InformationsquelleAutor Robert Andrzejuk