本文整理汇总了C++中string::GetBuffer方法的典型用法代码示例。如果您正苦于以下问题:C++ string::GetBuffer方法的具体用法?C++ string::GetBuffer怎么用?C++ string::GetBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类string
的用法示例。
在下文中一共展示了string::GetBuffer方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddEndSlash
BOOL AddEndSlash(string &strPath, wchar_t TypeSlash)
{
wchar_t *lpwszPath = strPath.GetBuffer(strPath.GetLength()+2);
BOOL Result = AddEndSlash(lpwszPath, TypeSlash);
strPath.ReleaseBuffer();
return Result;
}
示例2: ExtractIfExistCommand
bool ExtractIfExistCommand(string &strCommandText)
{
bool Result=true;
const wchar_t *wPtrCmd=PrepareOSIfExist(strCommandText);
// Во! Условие не выполнено!!!
// (например, пока рассматривали менюху, в это время)
// какой-то злобный чебурашка стер файл!
if (wPtrCmd)
{
if (!*wPtrCmd)
{
Result=false;
}
else
{
size_t offset = wPtrCmd-strCommandText.CPtr();
wchar_t *CommandText = strCommandText.GetBuffer();
wchar_t *PtrCmd = CommandText+offset;
// прокинем "if exist"
wmemmove(CommandText+(*CommandText==L'@'?1:0),PtrCmd,StrLength(PtrCmd)+1);
strCommandText.ReleaseBuffer();
}
}
return Result;
}
示例3: TruncStrFromEnd
string& __stdcall TruncStrFromEnd(string &strStr, int MaxLength)
{
wchar_t *lpwszBuffer = strStr.GetBuffer();
TruncStrFromEnd(lpwszBuffer, MaxLength);
strStr.ReleaseBuffer();
return strStr;
}
示例4: TruncPathStr
string& __stdcall TruncPathStr(string &strStr, int MaxLength)
{
wchar_t *lpwszStr = strStr.GetBuffer();
TruncPathStr(lpwszStr, MaxLength);
strStr.ReleaseBuffer();
return strStr;
}
示例5: ReplaceStrings
// Заменить в строке Str Count вхождений подстроки FindStr на подстроку ReplStr
// Если Count < 0 - заменять "до полной победы"
// Return - количество замен
int ReplaceStrings(string &strStr,const wchar_t *FindStr,const wchar_t *ReplStr,int Count,BOOL IgnoreCase)
{
const int LenFindStr=StrLength(FindStr);
if ( !LenFindStr || !Count )
return 0;
const int LenReplStr=StrLength(ReplStr);
size_t L=strStr.GetLength();
const int Delta = LenReplStr-LenFindStr;
const int AllocDelta = Delta > 0 ? Delta*10 : 0;
size_t I=0;
int J=0;
while (I+LenFindStr <= L)
{
int Res=IgnoreCase?StrCmpNI(&strStr[I], FindStr, LenFindStr):StrCmpN(&strStr[I], FindStr, LenFindStr);
if (!Res)
{
wchar_t *Str;
if (L+Delta+1 > strStr.GetSize())
Str = strStr.GetBuffer(L+AllocDelta);
else
Str = strStr.GetBuffer();
if (Delta > 0)
wmemmove(Str+I+Delta,Str+I,L-I+1);
else if (Delta < 0)
wmemmove(Str+I,Str+I-Delta,L-I+Delta+1);
wmemcpy(Str+I,ReplStr,LenReplStr);
I += LenReplStr;
L+=Delta;
strStr.ReleaseBuffer(L);
if (++J == Count && Count > 0)
break;
}
else
{
I++;
}
}
return J;
}
示例6: QuoteSpaceOnly
void QuoteSpaceOnly(string& strSrc)
{
TCHAR* lpBuffer = strSrc.GetBuffer(strSrc.GetLength()+5);
FSF.QuoteSpaceOnly(lpBuffer);
strSrc.ReleaseBuffer();
}
示例7: farTruncPathStr
void farTruncPathStr(string& strFileName, int nLength)
{
TCHAR* pBuffer = strFileName.GetBuffer();
FSF.TruncPathStr(pBuffer, nLength);
strFileName.ReleaseBuffer();
}
示例8: farTrim
void farTrim(string& strStr)
{
TCHAR* pBuffer = strStr.GetBuffer();
FSF.Trim(pBuffer);
strStr.ReleaseBuffer();
}
示例9: farUnquote
void farUnquote(string& strStr)
{
TCHAR* pBuffer = strStr.GetBuffer();
FSF.Unquote(pBuffer);
strStr.ReleaseBuffer();
}
示例10: farQuoteSpaceOnly
void farQuoteSpaceOnly(string& strStr)
{
TCHAR* pBuffer = strStr.GetBuffer(strStr.GetLength()+2);
FSF.QuoteSpaceOnly(pBuffer);
strStr.ReleaseBuffer();
}
示例11: GetReparsePointInfo
DWORD WINAPI GetReparsePointInfo(const wchar_t *Object, string &strDestBuff,LPDWORD lpReparseTag)
{
WORD NameLength=0;
LPBYTE szBuff=new BYTE[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
if(szBuff)
{
PREPARSE_DATA_BUFFER rdb = reinterpret_cast<PREPARSE_DATA_BUFFER>(szBuff);
if (GetREPARSE_DATA_BUFFER(Object,rdb))
{
const wchar_t *PathBuffer;
if (lpReparseTag)
*lpReparseTag=rdb->ReparseTag;
if (rdb->ReparseTag == IO_REPARSE_TAG_SYMLINK)
{
NameLength = rdb->SymbolicLinkReparseBuffer.PrintNameLength/sizeof(wchar_t);
if (NameLength)
{
PathBuffer = &rdb->SymbolicLinkReparseBuffer.PathBuffer[rdb->SymbolicLinkReparseBuffer.PrintNameOffset/sizeof(wchar_t)];
}
else
{
NameLength = rdb->SymbolicLinkReparseBuffer.SubstituteNameLength/sizeof(wchar_t);
PathBuffer = &rdb->SymbolicLinkReparseBuffer.PathBuffer[rdb->SymbolicLinkReparseBuffer.SubstituteNameOffset/sizeof(wchar_t)];
}
}
else
{
NameLength = rdb->MountPointReparseBuffer.PrintNameLength/sizeof(wchar_t);
if (NameLength)
{
PathBuffer = &rdb->MountPointReparseBuffer.PathBuffer[rdb->MountPointReparseBuffer.PrintNameOffset/sizeof(wchar_t)];
}
else
{
NameLength = rdb->MountPointReparseBuffer.SubstituteNameLength/sizeof(wchar_t);
PathBuffer = &rdb->MountPointReparseBuffer.PathBuffer[rdb->MountPointReparseBuffer.SubstituteNameOffset/sizeof(wchar_t)];
}
}
wchar_t *lpwszDestBuff=strDestBuff.GetBuffer(NameLength+1);
wcsncpy(lpwszDestBuff,PathBuffer,NameLength);
strDestBuff.ReleaseBuffer(NameLength);
}
delete[] szBuff;
}
return NameLength;
}
示例12: NormalizeSymlinkName
void NormalizeSymlinkName(string &strLinkName)
{
if (!StrCmpN(strLinkName,L"\\??\\",4))
{
LPWSTR LinkName=strLinkName.GetBuffer();
LinkName[1]=L'\\';
strLinkName.ReleaseBuffer();
PATH_TYPE Type = ParsePath(strLinkName);
if(Type == PATH_DRIVELETTERUNC)
{
strLinkName.LShift(4);
}
}
}
示例13: RemoveExternalSpaces
/* $ 02.02.2001 IS
Заменяет пробелами непечатные символы в строке. В настоящий момент
обрабатываются только cr и lf.
*/
string& WINAPI RemoveUnprintableCharacters(string &strStr)
{
wchar_t *p = strStr.GetBuffer();
while (*p)
{
if (IsEol(*p))
*p=L' ';
p++;
}
strStr.ReleaseBuffer(strStr.GetLength());
return RemoveExternalSpaces(strStr);
}
示例14: Unquote
void WINAPI Unquote(string &strStr)
{
wchar_t *Dst = strStr.GetBuffer();
const wchar_t *Str = Dst;
const wchar_t *StartPtr = Dst;
while (*Str)
{
if (*Str!=L'\"')
*Dst++=*Str;
Str++;
}
strStr.ReleaseBuffer(Dst-StartPtr);
}
示例15: NormalizeSymlinkName
void NormalizeSymlinkName(string &strLinkName)
{
if (!StrCmpN(strLinkName,L"\\??\\",4))
{
if (IsNetworkPath(strLinkName) || IsLocalVolumePath(strLinkName))
{
LPWSTR LinkName=strLinkName.GetBuffer();
LinkName[1]=L'\\';
strLinkName.ReleaseBuffer();
}
else
{
strLinkName.LShift(4);
}
}
}