CCString
#ifndef __CCSTRING_H__
#define __CCSTRING_H__
#if (CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBERRY)
#include <string.h>
#endif
#include <stdarg.h>
#include <string>
#include <functional>
#include "CCObject.h"
NS_CC_BEGIN
/**
* @addtogroup data_structures
* @{
*/
class CC_DLL CCString : public CCObject
{
public:
CCString();
CCString(const char* str);
CCString(const std::string& str);
CCString(const CCString& str);
virtual ~CCString();
/* override assignment operator */
CCString& operator= (const CCString& other);
/** init a string with format, it's similar with the c function 'sprintf' */
bool initWithFormat(const char* format, ...) CC_FORMAT_PRINTF(2, 3);
/** convert to int value */
int intValue() const;
/** convert to unsigned int value */
unsigned int uintValue() const;
/** convert to float value */
float floatValue() const;
/** convert to double value */
double doubleValue() const;
/** convert to bool value */
bool boolValue() const;
/** get the C string */
const char* getCString() const;
/** get the length of string */
unsigned int length() const;
/** compare to a c string */
int compare(const char *) const;
/* override functions */
virtual CCObject* copyWithZone(CCZone* pZone);
virtual bool isEqual(const CCObject* pObject);
/** create a string with std string, you can also pass a c string pointer because the default constructor of std::string can access a c string pointer.
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* create(const std::string& str);
/** create a string with format, it's similar with the c function 'sprintf', the default buffer size is (1024*100) bytes,
* if you want to change it, you should modify the kMaxStringLen macro in CCString.cpp file.
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* createWithFormat(const char* format, ...) CC_FORMAT_PRINTF(1, 2);
/** create a string with binary data
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* createWithData(const unsigned char* pData, unsigned long nLen);
/** create a string with a file,
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* createWithContentsOfFile(const char* pszFileName);
virtual void acceptVisitor(CCDataVisitor &visitor);
private:
/** only for internal use */
bool initWithFormatAndValist(const char* format, va_list ap);
public:
std::string m_sString;
};
struct CCStringCompare : public std::binary_function<CCString *, CCString *, bool> {
public:
bool operator() (CCString * a, CCString * b) const {
return strcmp(a->getCString(), b->getCString()) < 0;
}
};
#define CCStringMake(str) CCString::create(str)
#define ccs CCStringMake
// end of data_structure group
/// @}
NS_CC_END
#endif //__CCSTRING_H__
浙公网安备 33010602011771号