⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 npstream.cpp

📁 这是c++编程方面的名著的例子代码
💻 CPP
字号:
#define INCL_DOSNMPIPES
#define INCL_DOSQUEUES
#include <string.h>
#include <fstream.h>
#include<os2.h>
#include<vector.h>
#include<algo.h>



template <class T> class npstream{
private:
   char PipeName[20];
   unsigned long PipeHandle;
   long int PipeMode;
   long int OpenMode;
   long int OutputBufSize;
   long int InputBufSize;
   long int TimeOut;
   unsigned long Result;
   fstream NamedPipe;
public:
    npstream(char *PName,long PMode,long OMode,long TOut = 1000);
    npstream(char *PName);
    ~npstream(void);
    void operator<<(T &X);
    void operator<<(vector<T> &X);
    void operator>>(T &X);
    long int pipeMode(void);
    long int openMode(void);
    long int outBufSize(void);
    long int inBufSize(void);
    long int timeOut(void);
    unsigned long result(void);
};


template <class T> npstream<T>::npstream(char *PName,long PMode,long OMode,long TOut = 1000)
{

	strcpy(PipeName,PName);
	PipeMode = PMode;
	OpenMode = OMode;
	OutputBufSize = (sizeof(T) * 1000);
	InputBufSize =  (sizeof(T) * 1000);
	TimeOut = TOut;
	Result = DosCreateNPipe(PipeName,&PipeHandle,OpenMode,PipeMode,
				OutputBufSize,InputBufSize,TimeOut);
	DosConnectNPipe(PipeHandle);
	NamedPipe.attach(PipeHandle);


}

template <class T> npstream<T>::npstream(char *PName)
{
      DosOpen(PName,&PipeHandle,&Result,0,
	      FILE_NORMAL,FILE_OPEN,OPEN_ACCESS_READWRITE |OPEN_SHARE_DENYNONE,
	      (PEAOP) NULL);
      NamedPipe.attach(PipeHandle);
}

template <class T> npstream<T>::~npstream(void)
{

    NamedPipe.close();

}

template <class T> void npstream<T>::operator<<(T &X)
{
	NamedPipe << X << " ";

}

template <class T> void npstream<T>::operator>>(T &X)
{

	NamedPipe >> X;

}


template <class T> void npstream<T>::operator<<(vector<T> &X)
{

      ostream_iterator<T> Out(NamedPipe," ");
      copy(X.begin(),X.end(),Out);

}

template <class T> long int npstream<T>::pipeMode(void)
{
     return(PipeMode);
}

template <class T> long int npstream<T>::openMode(void)
{
    return(OpenMode);
}

template <class T> long int npstream<T>::outBufSize(void)
{
   return(OutputBufSize);
}

template <class T> long int npstream<T>::inBufSize(void)
{
   return(InputBufSize);
}

template <class T> long int npstream<T>::timeOut(void)
{
     return(TimeOut);
}

template <class T> unsigned long npstream<T>::result(void)
{

     return(Result);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -