JAVA基础:使用Properties类带来的好处

文章作者 100test 发表时间 2007:03:14 16:56:04
来源 100Test.Com百考试题网


许多开发者抱怨C++不能像Java那样绑定Properties类。Java的Properties类内在包含一个文件,该文件用来读写Properties类中的属性,可以写成这样形式:<名字>=<数值>(例如:ConnectToInternet=Use IE)。

使用Properties类的好处就是你可以很轻松的理解和修改它们。在本文的第一部分中,你将看到我们也可以在C++中使用Properties类。本文的第二部分将向你演示通过使用操作符>>和<<把数据保存到Properties类中是多么的容易。

现在介绍C++ Properties文件的结构。该文件的每一行可以是下面三种情况中的某一种:

空行(认为它是注释中的一部分)

以‘#’ 开始的注释行

‘<名字>=<数值>’行,这是给一个属性赋值的语句

现在让我们再看看Properties类的的特点:

注释是持久性的(当保存Properties类时,它们不会丢失掉)。注意每一个注释都属于某个属性。在‘<名字>=<数值>’行上的注释行属于该‘<名字>’属性。

当保存Properties类后,属性仍然保留自己的位置。

它对各种字符类型都有效:char、wchar_t等等

Properties类的使用相当简单:

save():保存属性

has_property(strPropertyName):如果类中有该属性则返回‘真’

string get_property(strPropertyName):返回指定的属性(如果指定属性不存在,则抛出例外)

set_property(strPropertyName, strPropertyValue):设置给定属性

stringget_property_comment( strPropertyName):返回属于指定属性的注释(如果指定属性的注释不存在,则抛出例外)

set_property_comment(strPropertyName, strPropertyComment):设置指定属性的注释(如果指定属性的注释不存在,则抛出例外)

下面是file_reader_writer类以及相应例子的代码。运行它之后,请查看properties.txt文件。看看访问和修改它是多么容易的一件事。


#include exception>

#include string>

#include sstream>

#include map>

#include vector>

#include fstream>

#include algorithm>

#include functional>

//允许字符串转化

template< class FromCharType, class ToCharType>

inline std::basic_string< ToCharType> convert_string( const std::basic_string< FromCharType> &. strSource)

{

std::basic_string< ToCharType> strDest.

int nSourceLen = strSource.length().

strDest.resize( nSourceLen).

for ( int idxChar = 0. idxChar < nSourceLen. idxChar )

{ strDest[ idxChar] = ( ToCharType)strSource[ idxChar]. }

return strDest.

}

// 用于trim_spaces.

template< class CharType>

struct is_char_in_str : public std::binary_function< CharType, std::basic_string< CharType>, bool>

{

bool operator()( CharType ch, const std::basic_string< CharType> &. strSource) const

{ return (strSource.find( ch) != std::basic_string< CharType>::npos). }

}.



//消除字符串中的空格

template< class CharType>

std::basic_string< CharType> trim_spaces( const std::basic_string< CharType> &. strSource)

{

std::basic_string< CharType> strSpaces. strSpaces = ( CharType) . strSpaces = ( CharType)\t.

typedef std::basic_string< CharType> string_type.

string_type::const_iterator

相关文章


解析Java类和对象的初始化过程
JAVA基础:谨慎使用Date和Time类
JAVA基础:使用Properties类带来的好处
HAVA基础:Java命名约定有哪些?
JAVA基础:在JavaScript中应用Object
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛