[C++]Variable in fstream öffnen

07/30/2010 12:13 Masterakio1995#1
Wo ist hier der fehler?
Quote:
save2 = save2 + ".txt";
data.open(save2, ios::out);
07/30/2010 12:22 scenebase#2
Was zeigt denn der Debugger als Fehler an?

[Only registered and activated users can see links. Click Here To Register...] <-- am besten noch mal anschauen :)
07/30/2010 13:02 vst0rm#3
wenn dein save2 ein string class object ist dann sollte es so gehen ^^

PHP Code:

string save2 
"hallo";
fstream data;

save2 += ".txt";

data.open(save2ios::out);

if(
data.is_open())
    
cout <<save2.data()<<endl
[Only registered and activated users can see links. Click Here To Register...]
07/31/2010 22:58 Masterakio1995#4
Funktioniert auch nicht
Quote:
In function `int main()':

no matching function for call to `std::basic_fstream<char, std::char_traits<char> >::open(std::string&, const std::_Ios_Openmode&)'

note C:\Dev-Cpp\include\c++\3.4.2\fstream:819 candidates are: void std::basic_fstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
08/01/2010 12:01 vst0rm#5
hmm zeig mal deinen source code
08/01/2010 16:41 Masterakio1995#6
Hier:
Quote:
#include <iostream>
#include <fstream>

using namespace std;

int main() {
string save2 = "hallo";
fstream data;

save2 += ".txt";

data.open(save2, ios::out);

if(data.is_open())
cout <<save2.data()<<endl;
system("pause");
}
08/01/2010 18:42 vst0rm#7
Quote:
Originally Posted by Masterakio1995 View Post
Hier:
Zitat:
#include <iostream>
#include <fstream>

using namespace std;

int main() {
string save2 = "hallo";
fstream data;

save2 += ".txt";

data.open(save2, ios::out);

if(data.is_open())
cout <<save2.data()<<endl;
system("pause");
}
also dein Code funktioniert bei mir tadellos (visual c++ 2010)

vieleicht mal das probieren

PHP Code:
data.open(save2ios_base::out);
//anstatt
data.open(save2ios::out); 
08/01/2010 19:47 Masterakio1995#8
nein immernoch nicht -.-"
08/01/2010 20:25 vst0rm#9
oki habs noch mal mit nem g++ compiler versucht

PHP Code:
data.open(save2.c_str(), ios::out); 
so sollte es klappen
08/01/2010 20:35 Masterakio1995#10
dankeschön kannst du mir eventl auch erklären warum das jetzt klappt?
08/01/2010 20:52 Bot_interesierter#11
Im Compiler Fehler steht doch schon was das Problem ist...
Die Member Funktion open von fstream ist nicht für std::string überladen, warum das in VC++ funktioniert ist mir ein Rätsel, vielleicht eine nicht dokumentierte Erweiterung von MS, in der msdn Library ist jeden Falls nichts dazu zu finden.
Code:
data.open(save2.c_str(), ios::out);
sollte funktionieren.
08/01/2010 22:25 Masterakio1995#12
trotzdem würde mich intressieren warum das mit save2.c_str() geht
08/01/2010 23:50 xNopex#13
Quote:
Code:
fstream::open
void open ( const char * filename,
            ios_base::openmode mode = ios_base::in | ios_base::out );

Quote:
Code:
string::c_str()
const char* c_str ( ) const;
Quelle: [Only registered and activated users can see links. Click Here To Register...]


Alles klar?
08/02/2010 00:04 MrSm!th#14
Quote:
Originally Posted by Masterakio1995 View Post
trotzdem würde mich intressieren warum das mit save2.c_str() geht
Wurde doch schon gesagt, weil keine Version für std::string existiert, nur für const char.

std::string::c_str() gibt genau so einen zurück.
08/02/2010 10:31 Masterakio1995#15
ok dankeschön