⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringhelper.cpp

📁 java实现的简单的分形树。简单易学!是学习分形知识的很好的例子。其java语法简单
💻 CPP
字号:
// --------------------------------------------------------------------------
// Dingus project - a collection of subsystems for game/graphics applications
// --------------------------------------------------------------------------

#include "stdafx.h"
#include "StringHelper.h"

using namespace dingus;


void CStringHelper::replaceTabs( std::string& s ) {
	int n = s.size();
	for( int i = 0; i < n; ++i ) {
		if( s[i] == '\t' ) s[i] = ' ';
	}
}

void CStringHelper::replaceLineEnds( std::string& s )
{
	int n = s.size();
	for( int i = 0; i < n; ++i ) {
		if( s[i]=='\n' || s[i]=='\r' ) s[i] = ' ';
	}
}

void CStringHelper::replaceWhitespace( std::string& s )
{
	int n = s.size();
	for( int i = 0; i < n; ++i ) {
		if( !isprint(s[i]) ) s[i] = ' ';
	}
}

void CStringHelper::trimString( std::string& s ) 
{
	int first = s.find_first_not_of( " \t\n\r" );
	if( first < 0 ) {
		s = "";
		return;
	}
	int last = s.find_last_not_of( " \t\n\r" );
	s = s.substr( first, (last-first+1) );
}

/*
bool CStringHelper::isFloat( const std::string& s )
{
	//[whitespace] [sign] [digits] [.digits] [ {d | D | e | E }[sign]digits]

	bool t = false;
	
	int i = 0;
	while( i < s.size() && ( s[i] == ' ' || s[i] == '\t' ) ) i++;
	if( i >= s.size() ) return t;

	if( ( s[i] == '+' ) || ( s[i] == '-' ) ) {
		i++;
		if( i >= s.size() ) return t;
	}

	if( isDigit( s[i] ) ) {
		t = true;
		while( i < s.size() && isDigit( s[i] ) ) i++;
		if( i >= s.size() ) return t;
	}

	if( s[i] == '.' ) {
		i++;
		if( i >= s.size() ) return t;

		if( isDigit( s[i] ) ) {
			t = true;
			while( i < s.size() && isDigit( s[i] ) ) i++;
			if( i >= s.size() ) return t;
		}
	}

	if( ( s[i] == 'd' ) || ( s[i] == 'D' ) || ( s[i] == 'e' ) || ( s[i] == 'E' ) ) {
		i++;
		if( i >= s.size() ) return t;

		if( ( s[i] == '+' ) || ( s[i] == '-' ) ) {
			i++;
			if( i >= s.size() ) return t;
		}

		while( i < s.size() && isDigit( s[i] ) ) i++;
		if( i >= s.size() ) return t;
	}
	return t;
}

bool CStringHelper::isInt( const std::string& s )
{
	//[whitespace] [sign] [digits] 

	bool t = false;
	
	int i = 0;
	while( i < s.size() && ( s[i] == ' ' || s[i] == '\t' ) ) i++;
	if( i >= s.size() ) return t;

	if( ( s[i] == '+' ) || ( s[i] == '-' ) ) {
		i++;
		if( i >= s.size() ) return t;
	}

	if( isDigit( s[i] ) ) {
		t = true;
		while( i < s.size() && isDigit( s[i] ) ) i++;
		if( i >= s.size() ) return t;
	}

	return t;
}
*/

bool CStringHelper::isName( const std::string& name ) 
{
	if( name.empty() )
		return false;
	if( !isLetter( name[0] ) && name[0]!='_' ) return false;
	int n = name.size();
	for( int i = 1; i < n; ++i )
		if( !( isLetter( name[i] ) || isDigit( name[i] ) || ( name[i] == '_' ) ) )
			return false;
	return true;
}

bool CStringHelper::equalsIgnoreCase( const std::string& s0, const std::string& s1 ) 
{
	if( s0.size() != s1.size() ) return false;
	std::string ss0 = s0;
	std::string ss1 = s1;
	toLower( ss0 );
	toLower( ss1 );
	return (ss0 == ss1);
}

void CStringHelper::toLower( std::string& s )
{
	int n = s.size();
	for( int i = 0; i < n; ++i )
		s[i] = tolower(s[i]);
}

void CStringHelper::toUpper( std::string& s )
{
	int n = s.size();
	for( int i = 0; i < n; ++i )
		s[i] = toupper(s[i]);
}

std::string CStringHelper::floatValue( float f )
{
	char buffer[256];
	sprintf( buffer, "%f", f );
	return std::string( buffer );
}

std::string CStringHelper::intValue( int i )
{
	char buffer[256];
	sprintf( buffer, "%d", i );
	return buffer;
}

std::string CStringHelper::intValue( int i, int digitsCount, bool zeros )
{
	char buffer[256];
	sprintf( buffer, "%0*d", digitsCount, i ); // TBD: zeros?
	return buffer;
}

void CStringHelper::stripPrefix( std::string& s, const std::string& prefix )
{
	if( startsWith(s,prefix) ) {
		s = s.substr( prefix.size(), s.size()-prefix.size() );
	}
}

bool CStringHelper::toBool( const std::string& str )
{
	std::string s = str;
	assert( 
		s=="true" || s=="false" || 
		s=="yes" || s=="no" || 
		s=="1" || s=="0" 
	);
	return s=="yes" || s=="true" || s=="1";
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -