Пример #1
0
// assign a repeated char to a string
string &string :: assign (char ch, size_t n)
{
    if (n == NPOS) _Xlen();
    if (_Grow (n, 1)) {	// copy non-empty string
        memset (m_pPtr, ch, n);
        m_pPtr[m_iLen = n] = '\0';
    }

    return (*this);
}
Пример #2
0
VOID ACLStr::_Concat
(
	IN size_t	nStrLen,
	IN LPCTSTR	pString
)
{
	if (nStrLen > 0 && 
		pString)
	{
		_Grow(nStrLen);
		STRNCAT_S(_string, _realLength, pString, nStrLen);
	}
}	//	::concat
Пример #3
0
    bool istream::WriteBytes(const BYTE *pDataIn, int cCount)
    {
        bool fRet = true;
        if ((_iIndex + cCount) >= _cbSize)
        {
            fRet = _Grow((DWORD)cCount);
        }

        if (fRet)
        {
            CopyMemory(&_pData[_iIndex], pDataIn, (size_t)cCount);
            _iIndex += (DWORD)cCount;
            _cbSizeValid = _iIndex;
        }
        return fRet;
    }
Пример #4
0
    bool istream::WriteByte(BYTE b)
    {
        bool fRet = TRUE;
        if (_iIndex >= _cbSize)
        {
            fRet = _Grow(1);
        }

        if (fRet)
        {
            _pData[_iIndex] = b;
            _iIndex++;
            _cbSizeValid = _iIndex;
        }

        return fRet;
    }
Пример #5
0
// insert a substring into a string
string &string :: insert (size_t p0, const string &str, size_t pos, size_t ns)
{
	if (m_iLen < p0 || str.length() < pos) _Xran();
	
size_t n = str.length() - pos;

	if ( n < ns) ns = n;
	if (NPOS - m_iLen <= ns) _Xlen();

	if (0 < ns && _Grow (n = m_iLen + ns)) {
	// insert to make non-empty string
		memmove (m_pPtr + p0 + ns, m_pPtr + p0, m_iLen - p0);
		memcpy (m_pPtr + p0, &str.c_str()[pos], ns);
		m_pPtr[m_iLen = n] = '\0';
	}
	
return (*this);
}
Пример #6
0
// replace with a repeated char in a string
string &string :: replace (size_t p0, size_t n0, const string &str, 
			   size_t pos, size_t ns)
{
	if (m_iLen < p0 || str.length() < pos) _Xran();
	
size_t n = str.length() - pos;

	if (n < ns) ns = n;
	if (NPOS - ns <= m_iLen - n0) _Xlen();

size_t nm = m_iLen - n0 - p0;
	
	if (ns < n0)
		memmove (m_pPtr + p0 + ns, m_pPtr + p0 + n0, nm);
	if ((0 < ns || 0 < n0) && _Grow (n = m_iLen + ns - n0)) {
	// replace to make non-empty string
		if (n0 < ns)
			memmove (m_pPtr + p0 + ns, m_pPtr + p0 + n0, nm);
		memcpy (m_pPtr + p0, &str.c_str()[pos], ns);
		m_pPtr[m_iLen = n] = '\0';
	}
	
return (*this);
}