C++对注册表常见操作的封装实现(四)

简介:
3、主文件(调用和测试)
view plaincopy to clipboardprint?
/********************************************************************  
*  文件名:main.cpp  
*  文件描述:主文件,对封装的注册表操作类进行测试  
*  创建人: RainLeaf, 2009年4月10日  
*  版本号:1.0  
*  修改记录:  
*********************************************************************/  
  
#include "RegOperator.h"   
#include <iostream>   
  
using namespace std;   
void RegOperatorHelp();   
  
int main( int argc, char *argv[])   
{   
  
  
    BOOL bReturn;   
  
    /* 命令行没有参数则输出帮助提示信息 */  
    if( 1 == argc )   
    {   
  
        RegOperatorHelp();   
        return 0;   
    }   
  
    for( int i = 0; i < argc; i ++)   
    {   
        assert( argv[i] );   
    }   
  
    /*============================================================  
    * 分支功能:读取键值  
    * 参  数:-read  RootKey SubKey ValueName  
    * 参数说明:命令 根键 子键 值的名字  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-read")) )   
    {   
        if( 5 == argc )   
        {   
            CRegOperator reg;   
            CString strPrint;   
            bReturn = reg.SetHKEY( argv[2] );/* 设置当前根键 */  
  
            if( FALSE == bReturn )   
            {   
                /* 根键设置失败 */  
                cout << "\nThe Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.OpenKey( argv[3] );   
            if( FALSE == bReturn )   
            {   
                cout << "Open [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.Read( argv[4], &strPrint );   
            if( FALSE == bReturn )   
            {   
                cout << "Read [" << argv[4] << "] fail!" << endl;   
                return 0;   
            }   
            /* 读取成功 */  
            cout << "The [" << argv[4] << "] value is [" << strPrint << "]" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have four param with \'-read\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:创建子键  
    * 参  数:-create  RootKey SubKey  
    * 参数说明:命令 根键 子键  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-create")) )   
    {   
        if( 4 == argc )   
        {   
            CRegOperator reg;   
  
            bReturn = reg.SetHKEY(argv[2]);   
            if( FALSE == bReturn )   
            {   
                cout << "The Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.CreateKey( argv[3] );   
            if( FALSE == bReturn )   
            {   
                cout << "Create the key [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
            cout << "Create the key [" << argv[3] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have three param with \'-create\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:创建键值  
    * 参  数:-write  RootKey SubKey ValueName Value  
    * 参数说明:命令 根键 子键 值的名字 值  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-write")) )   
    {   
        if( 6 == argc )   
        {   
            CRegOperator reg;   
            bReturn = reg.SetHKEY(argv[2]);   
  
            if( FALSE == bReturn )   
            {   
                cout << "The Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.OpenKey(argv[3]);   
            if( FALSE == bReturn )   
            {   
                cout << "Open [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.Write(argv[4], argv[5]);   
            if( FALSE == bReturn )   
            {   
                cout << "Write [" << argv[4] << "] fail!" << endl;   
                return 0;   
            }   
  
            cout << "Write [" << argv[5] << "] value into [" << argv[4] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have five param with \'-write\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:删除键值  
    * 参  数:-delval  RootKey SubKey ValueName  
    * 参数说明:命令 根键 子键 值的名字  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-delval")) )   
    {   
        if( 5 == argc )   
        {   
            CRegOperator reg;   
            bReturn = reg.SetHKEY(argv[2]);   
  
            if( FALSE == bReturn )   
            {   
                cout << "The Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.OpenKey(argv[3]);   
            if( FALSE == bReturn )   
            {   
                cout << "Open [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.DeleteValue( argv[4] );   
            if( FALSE == bReturn )   
            {   
                cout << "Delete the [" << argv[4] << "] fail!" << endl;   
                return 0;   
            }   
  
            cout << "Delete [" << argv[4] << "] value from [" << argv[3] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have four param with \'-delval\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:删除非空子键  
    * 参  数:-delkey  RootKey SubKey  
    * 参数说明:命令 根键 子键  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-delkey")) )   
    {   
        if( 4 == argc )   
        {   
            CRegOperator reg;   
  
            bReturn = reg.DeleteKey( argv[2] ,argv[3] );   
            if( FALSE == bReturn )   
            {   
                cout << "Delete the [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            cout << "Delete [" << argv[3] << "] value from [" << argv[2] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have three param with \'-delkey\' option!" << endl;   
            return 0;   
        }   
    }   


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/201906,如需转载请自行联系原作者
相关文章
|
C++ 容器
C++中向量的操作vector
C++中向量的操作vector
207 6
|
C++
C++中的封装、继承与多态:深入理解与应用
C++中的封装、继承与多态:深入理解与应用
465 1
|
缓存 网络协议 Linux
c++实战篇(三) ——对socket通讯服务端与客户端的封装
c++实战篇(三) ——对socket通讯服务端与客户端的封装
613 0
|
数据安全/隐私保护 C语言 C++
C++(七)封装
本文档详细介绍了C++封装的概念及其应用。封装通过权限控制对外提供接口并隐藏内部数据,增强代码的安全性和可维护性。文档首先解释了`class`中的权限修饰符(`public`、`private`、`protected`)的作用,并通过示例展示了如何使用封装实现栈结构。接着介绍了构造器和析构器的使用方法,包括初始化列表的引入以及它们在内存管理和对象生命周期中的重要性。最后,通过分文件编程的方式展示了如何将类定义和实现分离,提高代码的模块化和复用性。
|
C++ 容器
【C++】map和set封装
【C++】map和set封装
161 2
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
367 10
|
存储 开发框架 Java
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
C++ iOS开发 开发者
C++一分钟之-文件输入输出(I/O)操作
【6月更文挑战第24天】C++的文件I/O涉及`ifstream`, `ofstream`和`fstream`类,用于读写操作。常见问题包括未检查文件打开状态、忘记关闭文件、写入模式覆盖文件及字符编码不匹配。避免这些问题的方法有:检查`is_open()`、显式关闭文件或使用RAII、选择适当打开模式(如追加`ios::app`)以及处理字符编码。示例代码展示了读文件和追加写入文件的实践。理解这些要点能帮助编写更健壮的代码。
255 2
|
数据安全/隐私保护 C++
C++语言深入理解类的封装与数据隐藏
深入理解类的封装与数据隐藏