Mehrere Variablen in den Dateinamen einbringen?



  • Für eine bestimmte Anwendung benötige ich die Ausgabe meines Programms in der Form "Variable1;Variable2". Ich habe das Problem auf folgenden Code reduzieren können:

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(){
    	cout << "Enter filename:!" << endl;
    	string filename;
    	getline(cin, filename);
    
    	cout << "Enter filename 2!" << endl;
    	string filename2;
    	getline(cin, filename2);
    
    	ofstream myfile;
    	myfile.open(filename.c_str() ";" filename2.c_str());
    	myfile << "test";
    	myfile.close();
    return 0;
    }
    

    Ich erhalte die Fehlermeldung: "error: expected ‘)’ before string constant" (g++-Compiler).
    Benutze ich in der Definition meines Dateinamens nur eine Variable, also

    myfile.open(filename.c_str())
    

    funktioniert das Programm einwandfrei. Leider bin ich darauf angewiesen, dass ich beide Variablen und das Semikolon dazwischen als Dateiname erhalte.
    Über Vorschläge und Anregungen würde ich mich sehr freuen.
    Vielen Dank und beste Grüße!

    justusjonas



  • Benutzer z.B. std::ostringstream um Strings zusammenzusetzen:

    #include <iostream>
    #include <sstream>
    #include <string>
    
    int main()
    {
      std::string filename1 = "blabla";
      std::string filename2 = "blibli";
    
      std::ostringstream oss;
      oss << filename1 << ";" << filename2;
      std::string filename = oss.str();
    
      std::cout << filename << std::endl;
    }
    


  • Wenn dein gcc halbwegs aktuell ist, geht es mit der Option -std=c++0x einfach so:

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(){
        cout << "Enter filename:!" << endl;
        string filename;
        getline(cin, filename);
    
        cout << "Enter filename 2!" << endl;
        string filename2;
        getline(cin, filename2);
    
        ofstream myfile;
        myfile.open(filename + ";" + filename2);
        myfile << "test";
        myfile.close();
    return 0;
    }
    

    Ansonsten:

    ...
    ofstream myfile;
        std::string outname = filename + ";" + filename2;
        myfile.open(outname.c_str());
    


  • Edit: Ahh, es geht ja auch um den Funktionsparametertyp 💡 - in dem Fall:

    (filename + ";" + filename2).c_str()
    

Anmelden zum Antworten