From: Dave H. <dhy...@gm...> - 2006-12-08 06:45:39
|
Hi Tiffany, > It runs up until the last line of code when it outputs a segmentation fault. > Any ideas on why I am getting the output fault? I wrote the following program (using buildroot 1200) and it almost works: #include <iostream> #include <fstream> using namespace std; int main( int argc, char **argv ) { cout << "fstream test program" << endl; ofstream ofs; ofs.open( "/mnt/cf/output.txt" ); if ( !ofs.is_open() ) { cerr << "open of /mnt/cf/output.txt failed" << endl; return 1; } for ( int arg = 1; arg < argc; arg++ ) { ofs << "argv[ " << arg << " ] = '" << argv[ arg ] << "'" << endl; } double d = 1.234; ofs << d << endl; ofs.close(); return 0; } The ofs << d portion fails. I believe that this is because the libstdc++ that comes with gcc requires the use of locales when streaming a double. uClibc has no locale support. You may need to look at uClibc++ http://cxx.uclibc.org/ or you may need to make your buildroot use glibc instead of uClibc (I haven't done this myself, but I've heard that others have). -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |