Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Datei Erstellung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.06.2004, 18:07 Uhr
DaReal



Ich hab folgendes Problem: Wenn ich den Quellcode benutze:


C++:
string test = "test";
ofstream fout(test, ios::app );



bringt der Compiler mir immer folgende Fehlermeldung:
no matching function for call to `std::basic_ofstream<char,
std::char_traits<char> >::basic_ofstream(std::string&, const std::_Ios_Openmode&)'

Wenn ich die Variable nicht benutze sondern das hier:


C++:
ofstream fout("test", ios::app );  



Funktioniert alles einwandfrei ! Meine Fragen:
1.Warum ?
2.Wie kann ich den Dateinamen durch eine Variable festlegen ?

Dieser Post wurde am 10.06.2004 um 18:36 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.06.2004, 18:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das hab ich an der stelle auch noch nicht hinbekommen... auch ein test.c_str() wollte er bei mir nicht fressen... ging nur wenn ichs mit nem char-array gemacht habe aber einen std::string wollte er ums verrecken nicht fressen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.06.2004, 20:03 Uhr
virtual
Sexiest Bit alive
(Operator)


@DaReal
Es funktioniert deshalb nicht, weil
a) ofstream nur einen Konstruktor mit einem const char* als Dateinamensparameter besitzt und
b) es keinen impliziten Konvertierungsoperator von std::string -> const char* gibt.

@Windalf

C++:
#include <fstream>
#include <string>

int main()
{
    std::string test="datei.txt";
    std::ofstream fout(test.c_str(), std::ios::app);
    fout << "Hallo, Welt" << std::endl;
}


Funktioniert einwandfrei.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.06.2004, 21:11 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
jo das frisst er bei mir... versteh die welt nicht mehr... Ich weiss das ich genau das versucht hab beim basteln einer templateklasse und da wollte der das ums verrecken nicht fressen... als ich dann mit sprintf in ein char-array gedruckt habe gings... war mir bis heute unerklärlich...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.06.2004, 00:02 Uhr
DaReal



Vielen Dank für die Hilfe Virtual !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.06.2004, 00:17 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Windalf postete
jo das frisst er bei mir... versteh die welt nicht mehr... Ich weiss das ich genau das versucht hab beim basteln einer templateklasse und da wollte der das ums verrecken nicht fressen... als ich dann mit sprintf in ein char-array gedruckt habe gings... war mir bis heute unerklärlich...

Das scheint mir das typische Windowserstmalrebootendanngehtswiederphänomen zu sein,
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.06.2004, 00:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Das scheint mir das typische Windowserstmalrebootendanngehtswiederphänomen zu sein,


das will ich mal hoffen das es so war und kein bug in vc++... ich such mal nach dem beispiel mal gucken ob ich es noch finde
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.06.2004, 00:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hab das beispiel gefunden und es geht jetzt auch

C++:
template <class Typ>
txtDB<Typ>::txtDB(std::string filenname){
    this->filename=filename;
    std::ifstream is(filenname.c_str());
    if(is.is_open()){
        is>>*this;
        is.close();
    }
}



verdammt nochmal warum geht das jetzt und davor nicht... ich weiss 100%ig das sich das vorher nicht kompilieren lies und kaum hab ich ein char[] reingepackt hat ers gefressen... das teil hat mich über ne stunde wahnsinnig gemacht weil ich mir nicht erklären konnte warum es nicht geht und jetzt gehts auf einmal da bin ich ja zufrieden
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: