------- Comment #4 from china dot wenli dot wang at gmail dot com 2010-08-10
01:07 -------
(In reply to comment #3)
> (In reply to comment #2)
> > Thank you,yeah,the code is not a self-contained testcase.I copile it with
> > another codes which not show here.
>
> Yes, but we don't want to see a useless chunk of your program, it doesn't help
> anyone. You could have reduced the code to this and it would show the same
> problem:
>
> #include <fstream>
> void f()
> {
> std::ofstream txt_stream;
> txt_stream.open("foo", "w");
> }
>
> Your example is full of unrelated code that has nothing to do with the
> problem.
>
> > The main problem is open() function.For
> > calling open() of GCC 3.4.6,what can I do in may code and how to update my
> > code
> > to ISO C++.Could please you give me specific example.Thank you in advance.
>
> As I said, the second argument to ofstream::open is openmode
> e.g.
>
> txt_stream.open("foo", std::ios::out);
>
> Please consult a C++ book or reference for more details.
>
Hi,
Mr Wakely,as you said,I write a example:
using namespace std;
#include<iostream>
#include<fstream>
int main()
{
std::ofstream txt_stream;
int status=0;
char txt_stream_file[100];
const char *file;
strcpy(txt_stream_file,"plots/");
strcat(txt_stream_file,"results");
strcat(txt_stream_file,".txt");
file=txt_stream_file;
txt_stream.open(file,std::ios::out);
if(txt_stream==NULL)
// if(!txt_stream.iis_open())
cout<<"cannot open "<<file<<endl;
exit(0);
}
cout<<" OK"<<endl;
return status;
}
It can be compiled and ran.The statement file=txt_stream_file is in order to
change char* to const char*. But open() function is not work,and out:
cannot open plots/results.txt
The open() function of gcc3.4.6 is:
/**
* @brief Opens an external file.
* @param s The name of the file.
* @param mode The open mode flags.
*
* Calls @c std::basic_filebuf::open(s,mode|out|trunc). If that
* function fails, @c failbit is set in the stream's error state.
*
* Tip: When using std::string to hold the filename, you must use
* .c_str() before passing it to this constructor.
*/
void
open(const char* __s,
ios_base::openmode __mode = ios_base::out | ios_base::trunc)
{
if (!_M_filebuf.open(__s, __mode | ios_base::out))
this->setstate(ios_base::failbit);
}
It is void function,and how can I know the function is work.For calling open()
function succesfully,what can I do in my code.Could please you give me more
advice.
wl wang
th10,August,2010
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45226