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

📄 stringformatter.cpp

📁 跨操作系统的微型中间件
💻 CPP
字号:
/*    File:       StringFormatter.cpp    Contains:   Implementation of StringFormatter class.                                  */#include <string.h>#include "StringFormatter.h"char*   StringFormatter::sEOL = "\r\n";UInt32  StringFormatter::sEOLLen = 2;void StringFormatter::Put(const Int32 num){    char buff[32];    sprintf(buff, "%ld", num);    Put(buff);}void StringFormatter::Put(char* buffer, UInt32 bufferSize){    if((bufferSize == 1) && (fCurrentPut != fEndPut)) {        *(fCurrentPut++) = *buffer;        fBytesWritten++;        return;    }                   //loop until the input buffer size is smaller than the space in the output    //buffer. Call BufferIsFull at each pass through the loop    UInt32 spaceLeft = this->GetSpaceLeft();    UInt32 spaceInBuffer =  spaceLeft - 1;    UInt32 resizedSpaceLeft = 0;        while ( (spaceInBuffer < bufferSize) || (spaceLeft == 0) ) // too big for destination    {        if (spaceLeft > 0)        {            ::memcpy(fCurrentPut, buffer, spaceInBuffer);            fCurrentPut += spaceInBuffer;            fBytesWritten += spaceInBuffer;            buffer += spaceInBuffer;            bufferSize -= spaceInBuffer;        }        this->BufferIsFull(fStartPut, this->GetCurrentOffset()); // resize buffer        resizedSpaceLeft = this->GetSpaceLeft();        if (spaceLeft == resizedSpaceLeft) // couldn't resize, nothing left to do        {             return; // done. There is either nothing to do or nothing we can do because the BufferIsFull        }        spaceLeft = resizedSpaceLeft;        spaceInBuffer =  spaceLeft - 1;    }        //copy the remaining chunk into the buffer    ::memcpy(fCurrentPut, buffer, bufferSize);    fCurrentPut += bufferSize;    fBytesWritten += bufferSize;    }

⌨️ 快捷键说明

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