本文整理汇总了C++中AString::SetLength方法的典型用法代码示例。如果您正苦于以下问题:C++ AString::SetLength方法的具体用法?C++ AString::SetLength怎么用?C++ AString::SetLength使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AString
的用法示例。
在下文中一共展示了AString::SetLength方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetExtraOutputPath
// GetExtraOutputPath
//------------------------------------------------------------------------------
void FunctionObjectList::GetExtraOutputPath( const AString * it, const AString * end, const char * option, AString & path ) const
{
const char * bodyStart = it->Get() + strlen( option ) + 1; // +1 for - or /
const char * bodyEnd = it->GetEnd();
// if token is exactly matched then value is next token
if ( bodyStart == bodyEnd )
{
++it;
// handle missing next value
if ( it == end )
{
return; // we just pretend it doesn't exist and let the compiler complain
}
bodyStart = it->Get();
bodyEnd = it->GetEnd();
}
// Strip quotes
Args::StripQuotes( bodyStart, bodyEnd, path );
// If it's not already a path (i.e. includes filename.ext) then
// truncate to just the path
const char * lastSlash = path.FindLast( '\\' );
lastSlash = lastSlash ? lastSlash : path.FindLast( '/' );
lastSlash = lastSlash ? lastSlash : path.Get(); // no slash, means it's just a filename
if ( lastSlash != ( path.GetEnd() - 1 ) )
{
path.SetLength( uint32_t(lastSlash - path.Get()) );
}
}
示例2: GetCodeDir
// GetCodeDir
//------------------------------------------------------------------------------
void FBuildTest::GetCodeDir( AString & codeDir ) const
{
// we want the working dir to be the 'Code' directory
TEST_ASSERT( FileIO::GetCurrentDir( codeDir ) );
#if defined( __WINDOWS__ )
const char * codePos = codeDir.FindI( "\\code\\" );
#else
const char * codePos = codeDir.FindI( "/code/" );
#endif
TEST_ASSERT( codePos );
codeDir.SetLength( (uint16_t)( codePos - codeDir.Get() + 6 ) );
}
示例3: defined
// GetEnvVariable
//------------------------------------------------------------------------------
/*static*/ bool Env::GetEnvVariable( const char * envVarName, AString & envVarValue )
{
#if defined( __WINDOWS__ )
// try to get the env variable into whatever storage we have available
uint32_t maxSize = envVarValue.GetReserved();
DWORD ret = ::GetEnvironmentVariable( envVarName, envVarValue.Get(), maxSize );
// variable does not exist
if ( ret == 0 )
{
return false;
}
// variable exists - was there enough space?
if ( ret > maxSize )
{
// not enough space, allocate enough
envVarValue.SetReserved( ret );
maxSize = envVarValue.GetReserved();
ret = ::GetEnvironmentVariable( envVarName, envVarValue.Get(), maxSize );
ASSERT( ret <= maxSize ); // should have fit
}
// make string aware of valid buffer length as populated by ::GetEnvironmentVariable
envVarValue.SetLength( ret );
return true;
#elif defined( __LINUX__ ) || defined( __APPLE__ )
const char * envVar = ::getenv( envVarName );
if ( envVar )
{
envVarValue = envVar;
return true;
}
return false;
#else
#error Unknown platform
#endif
}
示例4: defined
// GetFilesRecurse
//------------------------------------------------------------------------------
/*static*/ void FileIO::GetFilesRecurseEx( AString & pathCopy,
const Array< AString > * patterns,
Array< FileInfo > * results )
{
const uint32_t baseLength = pathCopy.GetLength();
#if defined( __WINDOWS__ )
pathCopy += '*'; // don't want to use wildcard to filter folders
// recurse into directories
WIN32_FIND_DATA findData;
HANDLE hFind = FindFirstFileEx( pathCopy.Get(), FindExInfoBasic, &findData, FindExSearchLimitToDirectories, nullptr, 0 );
if ( hFind == INVALID_HANDLE_VALUE)
{
return;
}
do
{
if ( findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
// ignore magic '.' and '..' folders
// (don't need to check length of name, as all names are at least 1 char
// which means index 0 and 1 are valid to access)
if ( findData.cFileName[ 0 ] == '.' &&
( ( findData.cFileName[ 1 ] == '.' ) || ( findData.cFileName[ 1 ] == '\000' ) ) )
{
continue;
}
pathCopy.SetLength( baseLength );
pathCopy += findData.cFileName;
pathCopy += NATIVE_SLASH;
GetFilesRecurseEx( pathCopy, patterns, results );
}
}
while ( FindNextFile( hFind, &findData ) != 0 );
FindClose( hFind );
// do files in this directory
pathCopy.SetLength( baseLength );
pathCopy += '*';
hFind = FindFirstFileEx( pathCopy.Get(), FindExInfoBasic, &findData, FindExSearchNameMatch, nullptr, 0 );
if ( hFind == INVALID_HANDLE_VALUE)
{
return;
}
do
{
if ( findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
{
continue;
}
if ( IsMatch( patterns, findData.cFileName ) )
{
pathCopy.SetLength( baseLength );
pathCopy += findData.cFileName;
if ( results->GetSize() == results->GetCapacity() )
{
results->SetCapacity( results->GetSize() * 2 );
}
results->SetSize( results->GetSize() + 1 );
FileInfo & newInfo = results->Top();
newInfo.m_Name = pathCopy;
newInfo.m_Attributes = findData.dwFileAttributes;
newInfo.m_LastWriteTime = (uint64_t)findData.ftLastWriteTime.dwLowDateTime | ( (uint64_t)findData.ftLastWriteTime.dwHighDateTime << 32 );
newInfo.m_Size = (uint64_t)findData.nFileSizeLow | ( (uint64_t)findData.nFileSizeHigh << 32 );
}
}
while ( FindNextFile( hFind, &findData ) != 0 );
FindClose( hFind );
#elif defined( __LINUX__ ) || defined( __APPLE__ )
DIR * dir = opendir( pathCopy.Get() );
if ( dir == nullptr )
{
return;
}
for ( ;; )
{
dirent * entry = readdir( dir );
if ( entry == nullptr )
{
break; // no more entries
}
// dir?
if ( ( entry->d_type & DT_DIR ) == DT_DIR )
{
// ignore . and ..
if ( entry->d_name[ 0 ] == '.' )
{
if ( ( entry->d_name[ 1 ] == 0 ) ||
( ( entry->d_name[ 1 ] == '.' ) && ( entry->d_name[ 2 ] == 0 ) ) )
{
//.........这里部分代码省略.........