2012-05-18 02:45:23 -05:00
//##################################################################################################
//
// Custom Visualization Core library
2013-09-20 08:22:29 -05:00
// Copyright (C) 2011-2013 Ceetron AS
//
// This library may be used under the terms of either the GNU General Public License or
// the GNU Lesser General Public License as follows:
//
// GNU General Public License Usage
// This library is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <<http://www.gnu.org/licenses/gpl.html>>
// for more details.
//
// GNU Lesser General Public License Usage
// This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
// for more details.
2012-05-18 02:45:23 -05:00
//
//##################################################################################################
2013-09-20 08:22:29 -05:00
2012-05-18 02:45:23 -05:00
# pragma once
# include "cvfCharArray.h"
# include <string>
namespace cvf {
//==================================================================================================
//
// A general unicode based string class
//
//==================================================================================================
class String
{
public :
String ( ) ;
String ( const std : : string & str ) ;
String ( const std : : wstring & str ) ;
String ( const String & str ) ;
String ( const char * str ) ;
String ( const wchar_t * str ) ;
explicit String ( char c ) ;
explicit String ( int number ) ;
explicit String ( int64 number ) ;
explicit String ( uint number ) ;
explicit String ( float number ) ;
explicit String ( double number ) ;
String & operator = ( String rhs ) ;
bool operator = = ( const String & rhs ) const ;
bool operator = = ( const wchar_t * rhs ) const ;
bool operator < ( const String & rhs ) const ;
bool operator ! = ( const String & rhs ) const ;
const String operator + ( const String & rhs ) const ;
String & operator + = ( const String & rhs ) ;
const wchar_t & operator [ ] ( size_t pos ) const ;
wchar_t & operator [ ] ( size_t pos ) ;
String toLower ( ) const ;
String toUpper ( ) const ;
String trimmedRight ( ) const ;
String trimmedLeft ( ) const ;
String trimmed ( ) const ;
String simplified ( ) const ;
std : : vector < String > split ( const String & delimiters = " " ) const ;
size_t find ( const String & str , size_t start = 0 ) const ;
2013-02-28 04:37:32 -06:00
bool startsWith ( const String & str ) const ;
2012-05-18 02:45:23 -05:00
String subString ( size_t start , size_t length = npos ) const ;
void replace ( const String & before , const String & after ) ;
2013-01-21 09:01:46 -06:00
const wchar_t * c_str ( ) const ;
2012-05-18 02:45:23 -05:00
CharArray toAscii ( ) const ; // Useful when you need a const char* pointer.
std : : string toStdString ( ) const ;
std : : wstring toStdWString ( ) const ;
CharArray toUtf8 ( ) const ;
2013-09-20 02:55:58 -05:00
static String fromAscii ( const char * str , size_t strSize = npos ) ;
2012-05-18 02:45:23 -05:00
static String fromUtf8 ( const char * str ) ;
bool isEmpty ( ) const ;
size_t size ( ) const ;
void resize ( size_t size ) ;
static String number ( float n , char format = ' g ' , int precision = - 1 ) ;
static String number ( double n , char format = ' g ' , int precision = - 1 ) ;
double toDouble ( bool * ok = NULL ) const ;
double toDouble ( double defaultValue ) const ;
float toFloat ( bool * ok = NULL ) const ;
float toFloat ( float defaultValue ) const ;
int toInt ( bool * ok = NULL ) const ;
int toInt ( int defaultValue ) const ;
2013-01-21 09:01:46 -06:00
uint toUInt ( bool * ok = NULL ) const ;
uint toUInt ( uint defaultValue ) const ;
int64 toInt64 ( bool * ok = NULL ) const ;
int64 toInt64 ( int64 defaultValue ) const ;
2012-05-18 02:45:23 -05:00
String arg ( const String & a , int fieldWidth = 0 , const wchar_t & fillChar = ' ' ) const ;
String arg ( char a , int fieldWidth = 0 , const wchar_t & fillChar = ' ' ) const ;
String arg ( int a , int fieldWidth = 0 , const wchar_t & fillChar = ' ' ) const ;
String arg ( int64 a , int fieldWidth = 0 , const wchar_t & fillChar = ' ' ) const ;
String arg ( uint a , int fieldWidth = 0 , const wchar_t & fillChar = ' ' ) const ;
String arg ( float a , int fieldWidth = 0 , char format = ' g ' , int precision = - 1 , const wchar_t & fillChar = ' ' ) const ;
String arg ( double a , int fieldWidth = 0 , char format = ' g ' , int precision = - 1 , const wchar_t & fillChar = ' ' ) const ;
void swap ( String & other ) ;
static const size_t npos ; // Same as std::string::npos. This value, when used as the value for a count parameter n in string's member functions, roughly indicates "as many as possible".
// As a return value it is usually used to indicate failure.
private :
std : : wstring m_string ;
} ;
String operator + ( const char * str1 , const String & str2 ) ;
}