datei-namen mit laufendem index
-
SERVUS.
ich möchte ein paar daten in verschiedene dateien schreiben. die dateien sollen vom namen her gleich sein, der einzige unterschied sollte der index sein. wie kann ich aber in den dateinamen einen index einbauen, der automisch in einer FOR-SCHLEIFE mit hochgezählt wird?
DANKE.
STICK.
-
Wenn die Frage korrekt gelautet hätte "Wie setze ich eine Zahl und einen String zusammen?"
stringstream stream; stream << "Datei" << i << ".txt"; stream.str(); // ist der Dateiname als stringWenn die Frage korrekt gelautet hätte "Wie zähle ich eine Variable hoch?"
Grundlagen pauken! 
-
HI.
muss man, um mit "stringstream" zu arbeiten, ausser #include <sstream> noch etwas anderes einfügen?
mein programm sagt nämlich, dass es stringstream nicht erkennt.DANKE.
STICK.
-
**std::**stringstream ?
-
Wie wäre es mit so einem Ansatz?
#include <fstream> #include <iostream> #include <iomanip> // std::setfill, std::setw #include <sstream> #include <string> struct LaufenderDateiname { LaufenderDateiname( const std::string& prefix, int cnt, const std::string& postfix ) : m_prefix( prefix ), m_cnt( cnt ), m_postfix( postfix ) {} LaufenderDateiname& operator++() { ++m_cnt; return *this; } std::string str() const { std::ostringstream buf; buf << m_prefix << std::setfill( '0' ) << std::setw( 2 ) << m_cnt << m_postfix; return buf.str(); } private: std::string m_prefix; int m_cnt; std::string m_postfix; }; int main() { using namespace std; LaufenderDateiname fn( "Output_", 1, ".txt" ); for( int n = 4; n; --n, ++fn ) { // z.B. cout << "Datei: " << fn.str() << endl; ofstream file( fn.str().c_str() ); // file << ... usw. } return 0; }Gruß
Werner
-
HALLO.
ganz so kompliziert ist es für meinen zweck dann doch nicht. habe es jetzt so geschrieben und es klappt auch ganz gut:
std::stringstream filename; filename << "SOBELY" << NUM << ".bmp"; char buf[50]; sprintf(buf, filename.str().c_str());TROTZDEM DANKE.
STICK.
-
Ja, das geht auch, wobei ich wohl auf das char-Array dazwischen verzichten würde - entweder du nutzt 'filename.str().c_str()' direkt für die Initialisierung deines fstream (oder den fopen()-Aufruf, wenn du der MEinung bist, sowas zu brauchen) oder du speicherst den Dateinamen in einem std::string.