473,770 Members | 1,952 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

More problems inheriting from streambuf

This is starting to seem ridiculous to me :(

#include <streambuf>
#include <iostream>

class
TWFileStream : public std::streambuf
{
private:
char cbuf[2];

protected:
TLSFile lsf;
virtual int_type overflow (int_type c)
{
*cbuf=c;
if(!LastOpSucce eded||!(LastOpS ucceeded=lsf.Wr ite(cbuf)))
return(EOF); return(c);
}
virtual std::streamsize xsputn(const char *s, std::streamsize num)
{
lsf.Write(s);re turn(0);
}
};

If there's nothing wrong with the above definition, *why* am I getting
errors about "operator<< not implemented in type TWFileStream"? I
thought that was the whole grand goal of this plan to inherit from
streambuf? *sigh*

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cybers pace.org | don't, I need to know. Flames welcome.
Jul 22 '05 #1
3 2186

"Christophe r Benson-Manica" <at***@nospam.c yberspace.org> wrote in message
news:c1******** **@chessie.cirr .com...
This is starting to seem ridiculous to me :(

#include <streambuf>
#include <iostream>

class
TWFileStream : public std::streambuf
{
private:
char cbuf[2];

protected:
TLSFile lsf;
virtual int_type overflow (int_type c)
{
*cbuf=c;
if(!LastOpSucce eded||!(LastOpS ucceeded=lsf.Wr ite(cbuf)))
return(EOF); return(c);
}
virtual std::streamsize xsputn(const char *s, std::streamsize num)
{
lsf.Write(s);re turn(0);
}
};

If there's nothing wrong with the above definition, *why* am I getting
errors about "operator<< not implemented in type TWFileStream"? I
thought that was the whole grand goal of this plan to inherit from
streambuf? *sigh*


Need to go back to the book I think.

TWFileStream is not a stream, and doesn't have operator<< defined. It's a
streambuf which must be attached to an ostream object.

TWFileStream buffer;
ostream stream(&buffer) ;
stream << "some string";

Normally you wrap this in a class

class TWFileStreamItI sReally : public std::ostream
{
public:
TWFileStreamItI sReally()
{
rdbuf(&buffer);
}
private:
TWFileStream buffer;
};

john
Jul 22 '05 #2
Christopher Benson-Manica escribió:
If there's nothing wrong with the above definition, *why* am I getting
errors about "operator<< not implemented in type TWFileStream"? I
thought that was the whole grand goal of this plan to inherit from
streambuf? *sigh*


You need to write your own streambuf, and your own stream that uses this
streambuf. There is a detailed sample at:
http://www.informatik.uni-konstanz.de/~kuehl/iostream/

Regards.
Jul 22 '05 #3
John Harrison <jo************ *@hotmail.com> spoke thus:
TWFileStream is not a stream, and doesn't have operator<< defined. It's a
streambuf which must be attached to an ostream object.
Yep, that's in the book... sorry to trouble you, although on the
bright side I think this is finally starting to make sense :)
Normally you wrap this in a class class TWFileStreamItI sReally : public std::ostream
{
...
};


I see, I'm in the process of doing that now, although I've made it a
template class so I can do different things with the buffer. Is that
a good idea?

*sigh* Only 13 compile errors to go, and then I get to find out that
it doesn't work anyway ;(

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cybers pace.org | don't, I need to know. Flames welcome.
Jul 22 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
12056
by: Viktor Lundström | last post by:
Hi! I was planning to wrap a socket inside an iostream, to achieve something like this: TCPSocket s(..); s << "Hello!" << endl; Information on the web seems to be a bit scarce on how to do this. I have understood that there is a relation between streambuf and iostream, where one should be able to extend streambuf and override the underflow/overflow functions (and do send()/recv() for example).
8
1473
by: Christopher Benson-Manica | last post by:
I know I keep asking similar questions, but I really want to do this at least sort of right. Not to mention I got no on-group replies to my previous post :( I desperately want an interface that can allow classes that implement it to act sort of like streams, but I just can't seem to get everything I want... class Writable { protected: ostringstream outbuf; // or should I use private inheritance?
9
2718
by: Fred Ma | last post by:
Hello, I posted previously under the thread: How to break this up into streambuf/ostream I've asked our library to get "C++ IOStreams and Locales..." by A. Langer et al. Meantime, I've looked at the C++ standard (ISO/IEC 14882) from the web to get a grip on the relationship between ostream methods and streambuf methods: flush(), operator<<(), sputc(),
4
3061
by: Thomas Matthews | last post by:
Hi, My objective is to add enable & disable functionality to the ofstream class. I want to have a log file where I can disable and enable output to it. When my first tests pass, I want to disable the annotations written to the log file, but enable the text from the newer test cases. I've searched the C++ newsgroups and the FAQ-Lite
1
1363
by: Bovine | last post by:
I've recently been using a class for directing output to both a file and the screen. I copied it from this website: http://www.talkaboutprogramming.com/group/comp.lang.c++/messages/812299.html This works perfectly on windows platforms, but for some reason I can't get it to compile on my SCO machine. I get the following errors: tee.h:27: syntax error before `(' tee.h:28: syntax error before `(' tee.h:29: syntax error before `(' and the...
7
7029
by: smith4894 | last post by:
Hello all, I'm working on writing my own streambuf classes (to use in my custom ostream/isteam classes that will handle reading/writing data to a mmap'd file). When reading from the mmap file, I essentially have a char buffer in my streambuf class, that I'm registering with setp(). on an overflow() call, I simply copy the contents of the buffer into the mmap'd file via memcpy().
2
11289
by: renagade629 | last post by:
Can anybody help me understand what i'm doing wrong or what I'm missing? Is there anyother good and commendable C++ program I can use (free) from the internet like Dev C++? I'm having trouble doing basic compiling on this new Dev C++, when i try to print something like: #include<iostream.h> using namespace std; int main () { cout << "Hello to the world" << endl; system("PAUSE") return 0;
4
6415
by: rakesh.usenet | last post by:
For a particular application of mine - I need a simulation of byte array output stream. * write data onto a stream * getback the contiguous content as an array later for network transport. My code looks as follows. #include <iostream>
3
4731
by: Raymond Martineau | last post by:
I have the following code segment for a class intended to split output between cout and a file: class SplitStream : public std::streambuf { std::streambuf *x; public: SplitStream() {
0
9617
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9453
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10254
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10036
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
1
7451
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6710
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5354
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
3607
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2849
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.