1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <iostream> #include <cstdio> #include <unistd.h> #include <boost/iostreams/device/file_descriptor.hpp> #include <boost/iostreams/stream.hpp> void write() { FILE * fp = fopen ( "whatever.txt" , "w" ); if (fp == NULL) { perror ( "fopen error" ); } int fd = fileno(fp); boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_sink> bis(fd); std::ostream os(&bis); os << "Hello World!" << std::endl; fclose (fp); } void read() { FILE * fp = fopen ( "whatever.txt" , "r" ); if (fp == NULL) { perror ( "fopen error" ); } int fd = fileno(fp); boost::iostreams::stream_buffer<boost::iostreams::file_descriptor_source> bis(fd); std::istream is(&bis); while (is) { std::string line; std::getline(is, line); std::cout << line << std::endl; } fclose (fp); } int main() { write(); read(); return 0; } |
Wednesday, June 22, 2011
How to Convert C FILE* to C++ iostream
When we deal with a lot of C libraries in our C++ code, there may be cases where we need to convert the C FILE* into C++ iostream. Boost iostreams can help to deal with such problems easily. Here's an example how to do it.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment