I have the following problem. I have to implement a class that has an attribute that is a char pointer meant to point to the object’s “code”, as follows:
class foo{
private:
char* cod;
...
public:
foo();
void getVal();
...
}
So on, so forth. getVal() is a method that takes the code from the standard istream and fills in all the information, including the code. The thing is, the “code” that identifies the object can’t be longer than a certain number of characters. This has to be done without using customized buffers for the method getVal(), so I can’t do the following:
//suppose the maximum number of characters is 50
void foo::getVal()
{
char buffer[100];
cin >> buffer;
if (strlen(buffer) > 50) //I'm not sure this would work considering how the stream
of characters would be copied to buffer and how strlen
works, but suppose this tells me how long the stream of
characters was.
{
throw "Exception";
}
...
}
This is forbidden. I also can’t use a customized istream, nor the boost library.
I thought I could find the place where istream keeps its information rather easily, but I can’t find it. All I’ve found were mentions to other types of stream.
Can somebody tell me if this can be done or where the stream keeps its buffered information?
Thanks
yes using strlen would work definitely ..you can write a sample program
for inputs greater than size 6 characters it will display size >6