Arrayinhalte schnell in ein Textdokument schreiben
-
@venezianer27 sagte in Arrayinhalte schnell in ein Textdokument schreiben:
@DirkB naja stellen wir uns vor, es geht 1000 Werte...
Wie oft die Schleife durchlaufen wird, ist doch egal (Laufzeit mal außen vor)
(Wegen Textdatei gehe ich davon aus, dass du die Werte als Dezimalzahlen schreiben möchtest)
-
Wie ich grundsätzlich mit Arrays arbeite weiß ich
Wirklich? Ich würde dann eher
<name des ofstream> << array[i]
erwarten.
-
@DirkB ja nur wie bringe das Programn dazu, dann nicht immer den gleichen Wert, sprich den zuletzt eingelesenen, ins Dokument zu schreiben? Oder muss ich die Zahlen (nochmal) einlesen und dann die jeweils eigegebene Zahl direkt reinschreiben innerhalb der Leseschleife? Dann hab ich aber immer noch das Problem, dass sie nicht in umgekehrter Reihenfolge drin stehen...
Lg Martin
-
@venezianer27
Peudocode:FOR i = len(array) TO 0: Schreibe array[i] in Stream END FOR
Beschäftige dich nochmal mit den Grudlegenden Strukturen des Programmierens. Schleifen sind absolut essentiell.
-
@venezianer27 sagte in Arrayinhalte schnell in ein Textdokument schreiben:
nur wie bringe das Programn dazu, dann nicht immer den gleichen Wert, sprich den zuletzt eingelesenen, ins Dokument zu schreiben?
Das tolle an Arrays ist ja, dass man die Werte einzeln ansprechen kann, diese aber fortlaufend nummeriert sind.
Oder muss ich die Zahlen (nochmal) einlesen und dann die jeweils eigegebene Zahl direkt reinschreiben innerhalb der Leseschleife?
Das wäre extrem blöd.
Die Werte bleiben durchaus im Array stehen.Dann hab ich aber immer noch das Problem, dass sie nicht in umgekehrter Reihenfolge drin stehen...
Du willst sie doch nur in umgekehrter Reihenfolge ausgeben.
(Das Array invertieren geht auch, ist hier aber überflüssig)
-
#include <cstdlib> // EXIT_FAILURE #include <iterator> // std::ostream_iterator<> #include <array> // std::array<> #include <algorithm> // std::copy<>() #include <fstream> // std::ofstream #include <iostream> // std::cerr int main() { std::array<int, 445> values; // ... char const *output_filename{ "whatever.txt" }; std::ofstream output{ output_filename }; if (!output.is_open()) { std::cerr << "Couldn't open \"" << output_filename << "\" for writing :(\n\n"; return EXIT_FAILURE; } std::copy(values.crbegin(), values.crend(), std::ostream_iterator<decltype(values)::value_type>{ output, " " }); }
-
@Swordfish sagte in Arrayinhalte schnell in ein Textdokument schreiben:
std::copy(values.crbegin(), values.crend(), std::ostream_iterator<decltype(values)::value_type>{ output, " " });
Vielen Dank für die zahlreichen Antworten und Hilfestellungen! Ja ich werde mich nochmals mit den grundlegenden Strukturen beschäftigen. Mein Beispiel funktioniert jetzt so wie ich es wollte. Allerdings blicke ich bei dem letzten Befehl nicht ganz durch, da ich mich ja nun doch noch eher in den Anfängerschuhen vorantaste! Kann mir bitte jemand erklären, was in diesem Befehl genau vor sich geht, damit ich verstehe, was ich hier mache? Vielen Dank und LG
-
std::copy()
std::array<>::crbegin()
std::array<>::crend()
std::ostream_iterator<>
std::copy()
kopiert von einem Iteratorfirst
bis zu Iteratorlast
Elemente nachd_first
(destination).crbegin()
undcrend()
geben einen const reverse-Iterator zurück - der Container wird also von hinten nach vorne durchlaufen (reverse).std::ostream_iterator<T>
schreibt Objekte vom Typ T in den Stream mit dem er konstruiert wurde (hier also derstd::ofstream output
).
-
@venezianer27 sagte in Arrayinhalte schnell in ein Textdokument schreiben:
Allerdings blicke ich bei dem letzten Befehl nicht ganz durch, da ich mich ja nun doch noch eher in den Anfängerschuhen vorantaste!
Für einen Anfänger sollte eine
for
-Schleife reichen. Gerade auch dann, wenn du es nicht kannst.
-
@Swordfish sagte in Arrayinhalte schnell in ein Textdokument schreiben:
std::copy()
kopiert von einem Iteratorfirst
bis zu Iteratorlast
Elemente nachd_last
(destination).d_first
-
@hustbaer ups.