本文整理汇总了C++中CPLString::Trim方法的典型用法代码示例。如果您正苦于以下问题:C++ CPLString::Trim方法的具体用法?C++ CPLString::Trim怎么用?C++ CPLString::Trim使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPLString
的用法示例。
在下文中一共展示了CPLString::Trim方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: osStatement
/*
* ExecuteSQL()
*/
OGRLayer *OGRNGWDataset::ExecuteSQL( const char *pszStatement,
OGRGeometry *poSpatialFilter, const char *pszDialect )
{
// Clean statement string.
CPLString osStatement(pszStatement);
osStatement = osStatement.Trim().replaceAll(" ", " ");
if( STARTS_WITH_CI(osStatement.c_str(), "DELLAYER:") )
{
CPLString osLayerName = osStatement.substr(9);
if( osLayerName.endsWith(";") )
{
osLayerName = osLayerName.substr(0, osLayerName.size() - 1);
osLayerName.Trim();
}
CPLDebug("NGW", "Delete layer with name %s.", osLayerName.c_str());
for( int iLayer = 0; iLayer < nLayers; ++iLayer )
{
if( EQUAL(papoLayers[iLayer]->GetName(), osLayerName.c_str() ) )
{
DeleteLayer( iLayer );
break;
}
}
return nullptr;
}
if( STARTS_WITH_CI(osStatement.c_str(), "DELETE FROM") )
{
// Get layer name from pszStatement DELETE FROM layer;.
CPLString osLayerName = osStatement.substr(12);
if( osLayerName.endsWith(";") )
{
osLayerName = osLayerName.substr(0, osLayerName.size() - 1);
osLayerName.Trim();
}
CPLDebug("NGW", "Delete features from layer with name %s.", osLayerName.c_str());
OGRNGWLayer *poLayer = static_cast<OGRNGWLayer*>(GetLayerByName(osLayerName));
if( poLayer )
{
poLayer->DeleteAllFeatures();
}
else
{
CPLError(CE_Failure, CPLE_AppDefined, "Unknown layer : %s",
osLayerName.c_str());
}
return nullptr;
}
return GDALDataset::ExecuteSQL(pszStatement, poSpatialFilter, pszDialect);
}
示例2: SetMetadataItem
void NTv2Dataset::CaptureMetadataItem( char *pszItem )
{
CPLString osKey;
CPLString osValue;
osKey.assign( pszItem, 8 );
osValue.assign( pszItem+8, 8 );
SetMetadataItem( osKey.Trim(), osValue.Trim() );
}
示例3: oStatement
OGRFeatureDefn *OGRIngresTableLayer::ReadTableDefinition( const char *pszTable )
{
poDS->EstablishActiveLayer( NULL );
/* -------------------------------------------------------------------- */
/* Fire off commands to get back the schema of the table. */
/* -------------------------------------------------------------------- */
CPLString osCommand;
OGRIngresStatement oStatement( poDS->GetConn() );
osCommand.Printf( "select column_name, column_datatype, column_length, "
"column_scale, column_ingdatatype, "
"column_internal_datatype "
"from iicolumns where table_name = '%s'",
pszTable );
if( !oStatement.ExecuteSQL( osCommand ) )
{
return NULL;
}
/* -------------------------------------------------------------------- */
/* Parse the returned table information. */
/* -------------------------------------------------------------------- */
OGRFeatureDefn *poDefn = new OGRFeatureDefn( pszTable );
char **papszRow;
poDefn->Reference();
poDefn->SetGeomType( wkbNone );
while( (papszRow = oStatement.GetRow()) != NULL )
{
CPLString osFieldName = papszRow[0];
CPLString osIngresType = papszRow[1];
CPLString osInternalType = papszRow[5];
GInt32 nWidth, nScale;
osIngresType.Trim();
osFieldName.Trim();
osInternalType.Trim();
memcpy( &nWidth, papszRow[2], 4 );
memcpy( &nScale, papszRow[3], 4 );
OGRFieldDefn oField(osFieldName, OFTString);
if( osGeomColumn.size() == 0
&& (EQUAL(osInternalType,"POINT")
|| EQUAL(osInternalType,"IPOINT")
|| EQUAL(osInternalType,"BOX")
|| EQUAL(osInternalType,"IBOX")
|| EQUAL(osInternalType,"LSEG")
|| EQUAL(osInternalType,"ILSEG")
|| EQUAL(osInternalType,"LINE")
|| EQUAL(osInternalType,"ILINE")
|| EQUAL(osInternalType,"LONG LINE")
|| EQUAL(osInternalType,"POLYGON")
|| EQUAL(osInternalType,"IPOLYGON")
|| EQUAL(osInternalType,"LONG POLYGON")
|| EQUAL(osInternalType,"CIRCLE")
|| EQUAL(osInternalType,"LINESTRING")
|| EQUAL(osInternalType,"MULTIPOINT")
|| EQUAL(osInternalType,"MULTIPOLYGON")
|| EQUAL(osInternalType,"MULTILINESTRING")
|| EQUAL(osInternalType,"GEOMETRYCOLLECTION")
|| EQUAL(osInternalType,"ICIRCLE")) )
{
osGeomColumn = osFieldName;
osIngresGeomType = osInternalType;
if( strstr(osInternalType,"POINT") )
poDefn->SetGeomType( wkbPoint );
else if( strstr(osInternalType,"LINE")
|| strstr(osInternalType,"SEG")
|| strstr(osInternalType, "LINESTRING"))
poDefn->SetGeomType( wkbLineString );
else if( strstr(osInternalType,"MULTIPOINT"))
poDefn->SetGeomType(wkbMultiPoint);
else if( strstr(osInternalType,"MULTIPOLYGON"))
poDefn->SetGeomType(wkbMultiPolygon);
else if( strstr(osInternalType,"MULTILINESTRING"))
poDefn->SetGeomType(wkbMultiLineString);
// Oddly this is the standin for a generic geometry type.
else if( strstr(osInternalType,"GEOMETRYCOLLECTION"))
poDefn->SetGeomType(wkbUnknown);
else
poDefn->SetGeomType( wkbPolygon );
continue;
}
else if( EQUALN(osIngresType,"byte",4)
|| EQUALN(osIngresType,"long byte",9) )
{
oField.SetType( OFTBinary );
}
else if( EQUALN(osIngresType,"varchar",7)
|| EQUAL(osIngresType,"text")
|| EQUALN(osIngresType,"long varchar",12) )
{
oField.SetType( OFTString );
//.........这里部分代码省略.........
示例4: atoi
//.........这里部分代码省略.........
delete poDS;
return NULL;
}
poDS->CaptureMetadataItem( achHeader + 3*16 );
poDS->CaptureMetadataItem( achHeader + 4*16 );
poDS->CaptureMetadataItem( achHeader + 5*16 );
poDS->CaptureMetadataItem( achHeader + 6*16 );
memcpy( &dfValue, achHeader + 7*16 + 8, 8 );
CPL_LSBPTR64( &dfValue );
osFValue.Printf( "%.15g", dfValue );
poDS->SetMetadataItem( "MAJOR_F", osFValue );
memcpy( &dfValue, achHeader + 8*16 + 8, 8 );
CPL_LSBPTR64( &dfValue );
osFValue.Printf( "%.15g", dfValue );
poDS->SetMetadataItem( "MINOR_F", osFValue );
memcpy( &dfValue, achHeader + 9*16 + 8, 8 );
CPL_LSBPTR64( &dfValue );
osFValue.Printf( "%.15g", dfValue );
poDS->SetMetadataItem( "MAJOR_T", osFValue );
memcpy( &dfValue, achHeader + 10*16 + 8, 8 );
CPL_LSBPTR64( &dfValue );
osFValue.Printf( "%.15g", dfValue );
poDS->SetMetadataItem( "MINOR_T", osFValue );
/* ==================================================================== */
/* Loop over grids. */
/* ==================================================================== */
int iGrid;
vsi_l_offset nGridOffset = sizeof(achHeader);
for( iGrid = 0; iGrid < nSubFileCount; iGrid++ )
{
CPLString osSubName;
int i;
GUInt32 nGSCount;
VSIFSeekL( poDS->fpImage, nGridOffset, SEEK_SET );
if (VSIFReadL( achHeader, 11, 16, poDS->fpImage ) != 16)
{
CPLError(CE_Failure, CPLE_AppDefined,
"Cannot read header for subfile %d", iGrid);
delete poDS;
return NULL;
}
for( i = 4; i <= 9; i++ )
CPL_LSBPTR64( achHeader + i*16 + 8 );
CPL_LSBPTR32( achHeader + 10*16 + 8 );
memcpy( &nGSCount, achHeader + 10*16 + 8, 4 );
osSubName.assign( achHeader + 8, 8 );
osSubName.Trim();
// If this is our target grid, open it as a dataset.
if( iTargetGrid == iGrid || (iTargetGrid == -1 && iGrid == 0) )
{
if( !poDS->OpenGrid( achHeader, nGridOffset ) )
{
delete poDS;
return NULL;
}
}
// If we are opening the file as a whole, list subdatasets.
if( iTargetGrid == -1 )
{
CPLString osKey, osValue;
osKey.Printf( "SUBDATASET_%d_NAME", iGrid );
osValue.Printf( "NTv2:%d:%s", iGrid, osFilename.c_str() );
poDS->SetMetadataItem( osKey, osValue, "SUBDATASETS" );
osKey.Printf( "SUBDATASET_%d_DESC", iGrid );
osValue.Printf( "%s", osSubName.c_str() );
poDS->SetMetadataItem( osKey, osValue, "SUBDATASETS" );
}
nGridOffset += (11+(vsi_l_offset)nGSCount) * 16;
}
/* -------------------------------------------------------------------- */
/* Initialize any PAM information. */
/* -------------------------------------------------------------------- */
poDS->SetDescription( poOpenInfo->pszFilename );
poDS->TryLoadXML();
/* -------------------------------------------------------------------- */
/* Check for overviews. */
/* -------------------------------------------------------------------- */
poDS->oOvManager.Initialize( poDS, poOpenInfo->pszFilename );
return( poDS );
}
示例5: RawRasterBand
GDALDataset *CTable2Dataset::Open( GDALOpenInfo * poOpenInfo )
{
if( !Identify( poOpenInfo ) )
return NULL;
/* -------------------------------------------------------------------- */
/* Create a corresponding GDALDataset. */
/* -------------------------------------------------------------------- */
CTable2Dataset *poDS = new CTable2Dataset();
poDS->eAccess = poOpenInfo->eAccess;
/* -------------------------------------------------------------------- */
/* Open the file. */
/* -------------------------------------------------------------------- */
CPLString osFilename = poOpenInfo->pszFilename;
if( poOpenInfo->eAccess == GA_ReadOnly )
poDS->fpImage = VSIFOpenL( osFilename, "rb" );
else
poDS->fpImage = VSIFOpenL( osFilename, "rb+" );
if( poDS->fpImage == NULL )
{
delete poDS;
return NULL;
}
/* -------------------------------------------------------------------- */
/* Read the file header. */
/* -------------------------------------------------------------------- */
CPL_IGNORE_RET_VAL(VSIFSeekL( poDS->fpImage, 0, SEEK_SET ));
char achHeader[160] = { '\0' };
CPL_IGNORE_RET_VAL(VSIFReadL( achHeader, 1, 160, poDS->fpImage ));
achHeader[16+79] = '\0';
CPLString osDescription = reinterpret_cast<const char *>( achHeader + 16 );
osDescription.Trim();
poDS->SetMetadataItem( "DESCRIPTION", osDescription );
/* -------------------------------------------------------------------- */
/* Convert from LSB to local machine byte order. */
/* -------------------------------------------------------------------- */
CPL_LSBPTR64( achHeader + 96 );
CPL_LSBPTR64( achHeader + 104 );
CPL_LSBPTR64( achHeader + 112 );
CPL_LSBPTR64( achHeader + 120 );
CPL_LSBPTR32( achHeader + 128 );
CPL_LSBPTR32( achHeader + 132 );
/* -------------------------------------------------------------------- */
/* Extract size, and geotransform. */
/* -------------------------------------------------------------------- */
int nRasterXSize, nRasterYSize;
memcpy( &nRasterXSize, achHeader + 128, 4 );
memcpy( &nRasterYSize, achHeader + 132, 4 );
if (!GDALCheckDatasetDimensions(nRasterXSize, nRasterYSize))
{
delete poDS;
return NULL;
}
poDS->nRasterXSize = nRasterXSize;
poDS->nRasterYSize = nRasterYSize;
double adfValues[4];
memcpy( adfValues, achHeader + 96, sizeof(double)*4 );
for( int i = 0; i < 4; i++ )
adfValues[i] *= 180/M_PI; // Radians to degrees.
poDS->adfGeoTransform[0] = adfValues[0] - adfValues[2]*0.5;
poDS->adfGeoTransform[1] = adfValues[2];
poDS->adfGeoTransform[2] = 0.0;
poDS->adfGeoTransform[3] = adfValues[1] + adfValues[3]*(nRasterYSize-0.5);
poDS->adfGeoTransform[4] = 0.0;
poDS->adfGeoTransform[5] = -adfValues[3];
/* -------------------------------------------------------------------- */
/* Setup the bands. */
/* -------------------------------------------------------------------- */
RawRasterBand *poBand =
new RawRasterBand( poDS, 1, poDS->fpImage,
160 + 4 + nRasterXSize * (nRasterYSize-1) * 2 * 4,
8, -8 * nRasterXSize,
GDT_Float32, CPL_IS_LSB, TRUE, FALSE );
poBand->SetDescription( "Latitude Offset (radians)" );
poDS->SetBand( 1, poBand );
poBand =
new RawRasterBand( poDS, 2, poDS->fpImage,
160 + nRasterXSize * (nRasterYSize-1) * 2 * 4,
8, -8 * nRasterXSize,
GDT_Float32, CPL_IS_LSB, TRUE, FALSE );
poBand->SetDescription( "Longitude Offset (radians)" );
poDS->SetBand( 2, poBand );
/* -------------------------------------------------------------------- */
//.........这里部分代码省略.........
示例6: ParseChildren
int ERSHdrNode::ParseChildren( VSILFILE * fp, int nRecLevel )
{
if( nRecLevel == 100 ) // arbitrary limit
{
CPLError(CE_Failure, CPLE_AppDefined,
"Too many recursion level while parsing .ers header");
return false;
}
while( true )
{
/* -------------------------------------------------------------------- */
/* Read the next line (or multi-line for bracketed value). */
/* -------------------------------------------------------------------- */
CPLString osLine;
if( !ReadLine( fp, osLine ) )
return FALSE;
/* -------------------------------------------------------------------- */
/* Got a Name=Value. */
/* -------------------------------------------------------------------- */
size_t iOff;
if( (iOff = osLine.find_first_of( '=' )) != std::string::npos )
{
CPLString osName = osLine.substr(0,iOff-1);
osName.Trim();
CPLString osValue = osLine.c_str() + iOff + 1;
osValue.Trim();
MakeSpace();
papszItemName[nItemCount] = CPLStrdup(osName);
papszItemValue[nItemCount] = CPLStrdup(osValue);
papoItemChild[nItemCount] = nullptr;
nItemCount++;
}
/* -------------------------------------------------------------------- */
/* Got a Begin for an object. */
/* -------------------------------------------------------------------- */
else if( (iOff = osLine.ifind( " Begin" )) != std::string::npos )
{
CPLString osName = osLine.substr(0,iOff);
osName.Trim();
MakeSpace();
papszItemName[nItemCount] = CPLStrdup(osName);
papszItemValue[nItemCount] = nullptr;
papoItemChild[nItemCount] = new ERSHdrNode();
nItemCount++;
if( !papoItemChild[nItemCount-1]->ParseChildren( fp, nRecLevel + 1 ) )
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Got an End for our object. Well, at least we *assume* it */
/* must be for our object. */
/* -------------------------------------------------------------------- */
else if( osLine.ifind( " End" ) != std::string::npos )
{
return TRUE;
}
/* -------------------------------------------------------------------- */
/* Error? */
/* -------------------------------------------------------------------- */
else if( osLine.Trim().length() > 0 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Unexpected line parsing .ecw:\n%s",
osLine.c_str() );
return FALSE;
}
}
}
示例7: Open
//.........这里部分代码省略.........
}
/* -------------------------------------------------------------------- */
/* Try to connect to the database. */
/* -------------------------------------------------------------------- */
IIAPI_CONNPARM connParm;
IIAPI_WAITPARM waitParm = { -1 };
memset( &connParm, 0, sizeof(connParm) );
connParm.co_genParm.gp_callback = NULL;
connParm.co_genParm.gp_closure = NULL;
connParm.co_target = (II_CHAR *) pszDBTarget;
connParm.co_connHandle = hConn;
connParm.co_tranHandle = NULL;
connParm.co_username =
(II_CHAR*) CSLFetchNameValue(papszOptions,"username");
connParm.co_password =
(II_CHAR*)CSLFetchNameValue(papszOptions,"password");
connParm.co_timeout = -1;
if( CSLFetchNameValue(papszOptions,"timeout") != NULL )
connParm.co_timeout = atoi(CSLFetchNameValue(papszOptions,"timeout"));
IIapi_connect( &connParm );
while( connParm.co_genParm.gp_completed == FALSE )
IIapi_wait( &waitParm );
hConn = connParm.co_connHandle;
if( connParm.co_genParm.gp_status != IIAPI_ST_SUCCESS
|| hConn == NULL )
{
OGRIngresStatement::ReportError( &(connParm.co_genParm),
"Failed to connect to Ingres database." );
return FALSE;
}
pszName = CPLStrdup( pszFullName );
bDSUpdate = bUpdate;
// Check for new or old Ingres spatial library
{
OGRIngresStatement oStmt( hConn );
if( oStmt.ExecuteSQL("SELECT COUNT(*) FROM iicolumns WHERE table_name = 'iiattribute' AND column_name = 'attgeomtype'" ) )
{
char **papszFields;
while( (papszFields = oStmt.GetRow()) )
{
CPLString osCount = papszFields[0];
if( osCount[0] == '0' )
{
bNewIngres = FALSE;
}
else
{
bNewIngres = TRUE;
}
}
}
}
/* -------------------------------------------------------------------- */
/* Get a list of available tables. */
/* -------------------------------------------------------------------- */
if( papszTableNames == NULL )
{
OGRIngresStatement oStmt( hConn );
if( oStmt.ExecuteSQL( "select table_name from iitables where system_use = 'U' and table_name not like 'iietab_%'" ) )
{
char **papszFields;
while( (papszFields = oStmt.GetRow()) )
{
CPLString osTableName = papszFields[0];
osTableName.Trim();
papszTableNames = CSLAddString( papszTableNames,
osTableName );
}
}
}
/* -------------------------------------------------------------------- */
/* Get the schema of the available tables. */
/* -------------------------------------------------------------------- */
int iRecord;
for( iRecord = 0;
papszTableNames != NULL && papszTableNames[iRecord] != NULL;
iRecord++ )
{
OpenTable( papszTableNames[iRecord], bUpdate );
}
CSLDestroy( papszTableNames );
return TRUE;
}
示例8: ParseChildren
int ERSHdrNode::ParseChildren( VSILFILE * fp )
{
while( TRUE )
{
size_t iOff;
CPLString osLine;
/* -------------------------------------------------------------------- */
/* Read the next line (or multi-line for bracketed value). */
/* -------------------------------------------------------------------- */
if( !ReadLine( fp, osLine ) )
return FALSE;
/* -------------------------------------------------------------------- */
/* Got a Name=Value. */
/* -------------------------------------------------------------------- */
if( (iOff = osLine.find_first_of( '=' )) != std::string::npos )
{
CPLString osName = osLine.substr(0,iOff-1);
osName.Trim();
CPLString osValue = osLine.c_str() + iOff + 1;
osValue.Trim();
MakeSpace();
papszItemName[nItemCount] = CPLStrdup(osName);
papszItemValue[nItemCount] = CPLStrdup(osValue);
papoItemChild[nItemCount] = NULL;
nItemCount++;
}
/* -------------------------------------------------------------------- */
/* Got a Begin for an object. */
/* -------------------------------------------------------------------- */
else if( (iOff = osLine.ifind( " Begin" )) != std::string::npos )
{
CPLString osName = osLine.substr(0,iOff);
osName.Trim();
MakeSpace();
papszItemName[nItemCount] = CPLStrdup(osName);
papszItemValue[nItemCount] = NULL;
papoItemChild[nItemCount] = new ERSHdrNode();
nItemCount++;
if( !papoItemChild[nItemCount-1]->ParseChildren( fp ) )
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Got an End for our object. Well, at least we *assume* it */
/* must be for our object. */
/* -------------------------------------------------------------------- */
else if( osLine.ifind( " End" ) != std::string::npos )
{
return TRUE;
}
/* -------------------------------------------------------------------- */
/* Error? */
/* -------------------------------------------------------------------- */
else if( osLine.Trim().length() > 0 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"Unexpected line parsing .ecw:\n%s",
osLine.c_str() );
return FALSE;
}
}
}
示例9: Open
//.........这里部分代码省略.........
IIapi_initialize( &initParm );
/* -------------------------------------------------------------------- */
/* Try to connect to the database. */
/* -------------------------------------------------------------------- */
IIAPI_CONNPARM connParm;
IIAPI_WAITPARM waitParm = { -1 };
memset( &connParm, 0, sizeof(connParm) );
connParm.co_genParm.gp_callback = NULL;
connParm.co_genParm.gp_closure = NULL;
connParm.co_target = (II_CHAR *) pszDBName;
connParm.co_connHandle = NULL;
connParm.co_tranHandle = NULL;
connParm.co_username =
(II_CHAR*) CSLFetchNameValue(papszOptions,"username");
connParm.co_password =
(II_CHAR*)CSLFetchNameValue(papszOptions,"password");
connParm.co_timeout = -1;
if( CSLFetchNameValue(papszOptions,"timeout") != NULL )
connParm.co_timeout = atoi(CSLFetchNameValue(papszOptions,"timeout"));
IIapi_connect( &connParm );
while( connParm.co_genParm.gp_completed == FALSE )
IIapi_wait( &waitParm );
hConn = connParm.co_connHandle;
if( connParm.co_genParm.gp_status != IIAPI_ST_SUCCESS
|| hConn == NULL )
{
OGRIngresStatement::ReportError( &(connParm.co_genParm),
"Failed to connect to Ingres database." );
return FALSE;
}
pszName = CPLStrdup( pszFullName );
bDSUpdate = bUpdate;
// Check for new or old Ingres spatial library
{
OGRIngresStatement oStmt( hConn );
if( oStmt.ExecuteSQL("SELECT COUNT(*) FROM iicolumns WHERE table_name = 'iiattribute' AND column_name = 'attgeomtype'" ) )
{
char **papszFields;
while( (papszFields = oStmt.GetRow()) )
{
CPLString osCount = papszFields[0];
if( osCount[0] == '0' )
{
bNewIngres = FALSE;
}
else
{
bNewIngres = TRUE;
}
}
}
}
/* -------------------------------------------------------------------- */
/* Get a list of available tables. */
/* -------------------------------------------------------------------- */
if( papszTableNames == NULL )
{
OGRIngresStatement oStmt( hConn );
if( oStmt.ExecuteSQL( "select table_name from iitables where system_use = 'U' and table_name not like 'iietab_%'" ) )
{
char **papszFields;
while( (papszFields = oStmt.GetRow()) )
{
CPLString osTableName = papszFields[0];
osTableName.Trim();
papszTableNames = CSLAddString( papszTableNames,
osTableName );
}
}
}
/* -------------------------------------------------------------------- */
/* Get the schema of the available tables. */
/* -------------------------------------------------------------------- */
int iRecord;
for( iRecord = 0;
papszTableNames != NULL && papszTableNames[iRecord] != NULL;
iRecord++ )
{
OpenTable( papszTableNames[iRecord], bUpdate );
}
CSLDestroy( papszTableNames );
return TRUE;
}