?? ostream.cpp
字號(hào):
/***
* ostream.cpp - definitions for ostream and ostream_withassign classes
*
* Copyright (c) 1991-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* Contains the core member function definitions for ostream and
* ostream_withassign classes.
*
*******************************************************************************/
#include <cruntime.h>
#include <internal.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <dbgint.h>
#pragma hdrstop
int ostream::opfx()
{
lock();
if (state)
{
state |= ios::failbit;
unlock();
return 0;
}
if (x_tie)
{
x_tie->flush();
}
lockbuf();
return(1); // return non-zero
}
void ostream::osfx()
{
x_width = 0;
if (x_flags & unitbuf)
{
if (bp->sync()==EOF)
state = failbit | badbit;
}
if (x_flags & ios::stdio)
{
if (fflush(stdout)==EOF)
state |= failbit;
if (fflush(stderr)==EOF)
state |= failbit;
}
unlockbuf();
unlock();
}
// note: called inline by unsigned char * and signed char * versions:
ostream& ostream::operator<<(const char * s)
{
if (opfx()) {
writepad("",s);
osfx();
}
return *this;
}
ostream& ostream::flush()
{
lock();
lockbuf();
if (bp->sync()==EOF)
state |= ios::failbit;
unlockbuf();
unlock();
return(*this);
}
ostream::ostream()
// : ios()
{
x_floatused = 0;
}
ostream::ostream(streambuf* _inistbf)
// : ios()
{
init(_inistbf);
x_floatused = 0;
}
ostream::ostream(const ostream& _ostrm)
// : ios()
{
init(_ostrm.rdbuf());
x_floatused = 0;
}
ostream::~ostream()
// : ~ios()
{
}
// used in ios::sync_with_stdio()
ostream& ostream::operator=(streambuf * _sbuf)
{
if (delbuf() && rdbuf())
delete rdbuf();
bp = 0;
this->ios::operator=(ios()); // initialize ios members
delbuf(0); // important!
init(_sbuf);
return *this;
}
ostream_withassign::ostream_withassign()
: ostream()
{
}
ostream_withassign::ostream_withassign(streambuf* _os)
: ostream(_os)
{
}
ostream_withassign::~ostream_withassign()
// : ~ostream()
{
}
ostream& ostream::writepad(const char * leader, const char * value)
{
unsigned int len, leadlen;
long padlen;
leadlen = strlen(leader);
len = strlen(value);
padlen = (((unsigned)x_width) > (len+leadlen)) ? ((unsigned)x_width) - (len + leadlen) : 0;
if (!(x_flags & (left|internal))) // default is right-adjustment
{
while (padlen-- >0)
{
if (bp->sputc((unsigned char)x_fill)==EOF)
state |= (ios::failbit|ios::badbit);
}
}
if (leadlen)
{
if ((unsigned)bp->sputn(leader,leadlen)!=leadlen)
state |= (failbit|badbit);
}
if (x_flags & internal)
{
while (padlen-- >0)
{
if (bp->sputc((unsigned char)x_fill)==EOF)
state |= (ios::failbit|ios::badbit);
}
}
if ((unsigned)bp->sputn(value,len)!=len)
state |= (failbit|badbit);
if (x_flags & left)
{
while ((padlen--)>0) // left-adjust if necessary
{
if (bp->sputc((unsigned char)x_fill)==EOF)
state |= (ios::failbit|ios::badbit);
}
}
return (*this);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -