cpp: Chain Of Responsibility Pattern
/*****************************************************************//**
* \file PayrollProcessing.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月6日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef PAYROLLPROCESSING_H
#define PAYROLLPROCESSING_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
using namespace std;
namespace DuJewelryChainOfResponsibilityPattern
{
/// <summary>
/// 薪水处理类
/// </summary>
class PayrollProcessing
{
public:
/// <summary>
/// 处理加薪请求
/// </summary>
/// <param name="sname">员工姓名</param>
/// <param name="salfigure">加薪多少</param>
void raiseSalaryRequest(const string& sname, int salfigure) //参数1代表要加薪的员工名字,参数2代表求要加薪多少
{
if (salfigure <= 1000)
{
//加薪要求不超过1000,部门经理可以批准
depmentManagerApprove(sname, salfigure);
}
else if (salfigure <= 5000)
{
//加薪要求在1000元之上但不超过5000,技术总监才能批准
CTOApprove(sname, salfigure);
}
else
{
//加薪要求超过5000元,总经理才能批准
generalManagerApprove(sname, salfigure);
}
}
private:
/// <summary>
/// 部门经理审批加薪请求
/// </summary>
/// <param name="sname">员工姓名</param>
/// <param name="salfigure">加薪多少</param>
void depmentManagerApprove(const string& sname, int salfigure)
{
cout << sname << "的加薪要求为:" << salfigure << "元,部门经理审批通过!" << endl;
}
/// <summary>
/// 技术总监审批加薪请求
/// </summary>
/// <param name="sname">员工姓名</param>
/// <param name="salfigure">加薪多少</param>
void CTOApprove(const string& sname, int salfigure)
{
cout << sname << "的加薪要求为:" << salfigure << "元,技术总监审批通过!" << endl;
}
/// <summary>
/// 总经理审批加薪请求
/// </summary>
/// <param name="sname">员工姓名</param>
/// <param name="salfigure">加薪多少</param>
void generalManagerApprove(const string& sname, int salfigure)
{
cout << sname << "的加薪要求为:" << salfigure << "元,总经理审批通过!" << endl;
}
};
}
#endif
/*****************************************************************//**
* \file ParentSalaryApprover.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef PARENTSALARYAPPROVER_H
#define PARENTSALARYAPPROVER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "RaiseSalaryRequest.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 薪水审批者父类
/// </summary>
class ParentSalaryApprover
{
public:
/// <summary>
///
/// </summary>
ParentSalaryApprover() :nextChain(nullptr) {}
/// <summary>
/// 做父类时析构函数应该为虚函数
/// </summary>
virtual ~ParentSalaryApprover() {}
/// <summary>
/// 设置指向的职责链中的下个审批者
/// </summary>
/// <param name="next"></param>
void setNextChain(ParentSalaryApprover* next)
{
nextChain = next;
}
/// <summary>
/// 处理加薪请求
/// </summary>
/// <param name="req"></param>
virtual void processRequest(const RaiseSalaryRequest& req) = 0;
protected:
/// <summary>
/// 找链中的下个对象并把请求投递给下个链中的对象
/// </summary>
/// <param name="req"></param>
void sendRequestToNextHandler(const RaiseSalaryRequest& req)
{
//找链中的下个对象
if (nextChain != nullptr)
{
//把请求投递给链中的下个对象
nextChain->processRequest(req);
}
else
{
//没找到链中的下个对象,程序流程执行这里似乎不应该
cout << req.getName() << "的加薪要求为:" << req.getSalFigure() << "元,但无人能够审批!" << endl;
}
}
private:
/// <summary>
///
/// </summary>
ParentSalaryApprover* nextChain; //指向下一个审批者(对象)的多态指针(指向自身类型),每个都指向下一个,就会构成一个职责链(链表)
};
}
#endif
/*****************************************************************//**
* \file GeneralManagerApprove.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef GENERALMANAGERAPPROVER_H
#define GENERALMANAGERAPPROVER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "RaiseSalaryRequest.h"
#include "ParentSalaryApprover.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 总经理子类
/// </summary>
class GeneralManagerApprove :public ParentSalaryApprover
{
public:
/// <summary>
/// 处理加薪请求
/// </summary>
/// <param name="req"></param>
virtual void processRequest(const RaiseSalaryRequest& req)
{
int salfigure = req.getSalFigure();
if (salfigure > 5000)
{
//如果自己能处理,则自己处理
cout << req.getName() << "的加薪要求为:" << salfigure << "元,总经理审批通过!" << endl;
}
else
{
sendRequestToNextHandler(req);//自己不能处理,尝试找链中的下个对象来处理
}
}
};
}
#endif
/*****************************************************************//**
* \file CTOApprove.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef CTOAPPROVER_H
#define CTOAPPROVER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "RaiseSalaryRequest.h"
#include "ParentSalaryApprover.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 技术总监子类
/// </summary>
class CTOApprove :public ParentSalaryApprover
{
public:
/// <summary>
/// 处理加薪请求
/// </summary>
/// <param name="req"></param>
virtual void processRequest(const RaiseSalaryRequest& req)
{
int salfigure = req.getSalFigure();
if (salfigure > 1000 && salfigure <= 5000)
{
//如果自己能处理,则自己处理
cout << req.getName() << "的加薪要求为:" << salfigure << "元,技术总监审批通过!" << endl;
}
else
{
sendRequestToNextHandler(req);//自己不能处理,尝试找链中的下个对象来处理
}
}
};
}
#endif
/*****************************************************************//**
* \file DepmentManagerApprove.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef DEPMENTMANAGERAPPROVER_H
#define DEPMENTMANAGERAPPROVER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "RaiseSalaryRequest.h"
#include "ParentSalaryApprover.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 部门经理子类
/// </summary>
class DepmentManagerApprove:public ParentSalaryApprover
{
public:
/// <summary>
/// 处理加薪请求
/// </summary>
/// <param name="req"></param>
virtual void processRequest(const RaiseSalaryRequest& req)
{
int salfigure = req.getSalFigure();
if (salfigure <= 1000)
{
//如果自己能处理,则自己处理
cout << req.getName() << "的加薪要求为:" << salfigure << "元,部门经理审批通过!" << endl;
}
else
{
//自己不能处理,尝试找链中的下个对象来处理
sendRequestToNextHandler(req);
}
}
};
}
#endif
/*****************************************************************//**
* \file RaiseSalaryRequest.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef RAISESALARYREQUEST_H
#define RAISESALARYREQUEST_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 加薪请求类
/// </summary>
class RaiseSalaryRequest
{
public:
/// <summary>
/// 构造函数
/// </summary>
/// <param name="sname"></param>
/// <param name="salfigure"></param>
RaiseSalaryRequest(const string& sname, int salfigure) :mName(sname), misalFigure(salfigure) {}
/// <summary>
/// 获取请求加薪的人员名字
/// </summary>
/// <returns></returns>
const string& getName() const
{
return mName;
}
/// <summary>
/// 获取请求加薪的数字
/// </summary>
/// <returns></returns>
int getSalFigure() const
{
return misalFigure;
}
private:
/// <summary>
/// 请求加薪的人员名字
/// </summary>
string mName;
/// <summary>
/// 请求加薪的数字
/// </summary>
int misalFigure;
};
}
#endif
/*****************************************************************//**
* \file ParentWordFilter.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef PARENTWORDFILTER_H
#define PARENTWORDFILTER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
///
/// </summary>
class ParentWordFilter
{
public:
/// <summary>
///
/// </summary>
ParentWordFilter() :nextChain(nullptr) {}
/// <summary>
/// 做父类时析构函数应该为虚函数
/// </summary>
virtual ~ParentWordFilter() {}
/// <summary>
/// 设置指向的职责链中的下个过滤器
/// </summary>
/// <param name="next"></param>
void setNextChain(ParentWordFilter* next)
{
nextChain = next;
}
/// <summary>
/// 处理敏感词过滤请求
/// </summary>
/// <param name="strWord"></param>
/// <returns></returns>
virtual string processRequest(string strWord) = 0;
protected:
/// <summary>
/// 找链中的下个对象并把请求投递给下个链中的对象
/// </summary>
/// <param name="strWord"></param>
/// <returns></returns>
string sendRequestToNextHandler(string strWord)
{
//找链中的下个对象
if (nextChain != nullptr)
{
//把请求投递给链中的下个对象
return nextChain->processRequest(strWord);
}
return strWord;
}
private:
/// <summary>
///
/// </summary>
ParentWordFilter* nextChain;
};
}
#endif
/*****************************************************************//**
* \file SexyWordFilter.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef SEXWORDFILTER_H
#define SEXWORDFILTER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "ParentWordFilter.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
///
/// </summary>
class SexyWordFilter:public ParentWordFilter
{
public:
/// <summary>
///
/// </summary>
/// <param name="strWord"></param>
/// <returns></returns>
virtual string processRequest(string strWord)
{
cout << "通过与词库比对,在strWord中查找\"性\"敏感词并用XXX来替换!" << endl;
strWord += "XXX"; //测试代码,具体的实现逻辑略......
return sendRequestToNextHandler(strWord);
}
};
}
#endif
/*****************************************************************//**
* \file DirtyWordFilter.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef DIRTYWORDFILTER_H
#define DIRTYWORDFILTER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "ParentWordFilter.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 脏话词过滤器子类
/// </summary>
class DirtyWordFilter :public ParentWordFilter
{
public:
virtual string processRequest(string strWord)
{
cout << "通过与词库比对,在strWord中查找\"脏话\"敏感词并用YYY来替换!" << endl;
strWord += "YYY";
return sendRequestToNextHandler(strWord);
}
};
}
#endif
/*****************************************************************//**
* \file PoliticsWordFilter.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef POLITICSWORDFILTER_H
#define POLITICSWORDFILTER_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "ParentWordFilter.h"
using namespace std;
namespace DuChainOfResponsibilityPattern
{
/// <summary>
/// 政治敏感词过滤器子类
/// </summary>
class PoliticsWordFilter :public ParentWordFilter
{
public:
virtual string processRequest(string strWord)
{
cout << "通过与词库比对,在strWord中查找\"政治\"敏感词并用ZZZ来替换!" << endl;
strWord += "ZZZ";
return sendRequestToNextHandler(strWord);
}
};
}
#endif
/*****************************************************************//**
* \file GeovinDu.h
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月6日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
* \author geovindu
* \date June 2023
*********************************************************************/
#pragma once
#ifndef GEOVINDU_H
#define GEOVINDU_H
#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>
#include "PayrollProcessing.h"
#include "RaiseSalaryRequest.h"
#include "ParentSalaryApprover.h"
#include "DepmentManagerApprove.h"
#include "CTOApprove.h"
#include "GeneralManagerApprove.h"
#include "ParentWordFilter.h"
#include "DirtyWordFilter.h"
#include "SexyWordFilter.h"
#include "PoliticsWordFilter.h"
using namespace std;
namespace DuJewelryChainOfResponsibilityPattern
{
/// <summary>
///
/// </summary>
class GeovinDu
{
private:
public:
/// <summary>
///
/// </summary>
void displaySimple();
/// <summary>
///
/// </summary>
void displayDuSimple();
/// <summary>
///
/// </summary>
void displayWordSimple();
};
}
#endif
/*****************************************************************//**
* \file GeovinDu.cpp
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月7日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
* \author geovindu
* \date June 2023
*********************************************************************/
#include "GeovinDu.h"
using namespace std;
using namespace DuChainOfResponsibilityPattern;
namespace DuJewelryChainOfResponsibilityPattern
{
/// <summary>
///
/// </summary>
void GeovinDu::displaySimple()
{
DuJewelryChainOfResponsibilityPattern::PayrollProcessing sh;
sh.raiseSalaryRequest("张三", 15000); //张三要求加薪1.5万
sh.raiseSalaryRequest("李四", 3500); //李四要求加薪3千5
sh.raiseSalaryRequest("王二", 800); //王二要求加薪8百
}
/// <summary>
///
/// </summary>
void GeovinDu::displayDuSimple()
{
//(1)创建出职责链中包含的各个对象(部门经理、技术总监、总经理)
DuChainOfResponsibilityPattern::ParentSalaryApprover* pzzlinkobj1 = new DuChainOfResponsibilityPattern::DepmentManagerApprove();
DuChainOfResponsibilityPattern::ParentSalaryApprover* pzzlinkobj2 = new DuChainOfResponsibilityPattern::CTOApprove();
DuChainOfResponsibilityPattern::ParentSalaryApprover* pzzlinkobj3 = new DuChainOfResponsibilityPattern::GeneralManagerApprove();
//(2)将这些对象串在一起构成职责链(链表),现在职责链中pzzlinkobj1排在最前面,pzzlinkobj3排在最后面
pzzlinkobj1->setNextChain(pzzlinkobj2);
pzzlinkobj2->setNextChain(pzzlinkobj3);
pzzlinkobj3->setNextChain(nullptr); //可以不写此行,因为ParSalApprover构造函数中设置了m_nextChain为nullptr
//(3)创建几位员工关于加薪的请求(对象)
DuChainOfResponsibilityPattern::RaiseSalaryRequest emp1Req("张三", 15000);//张三要求加薪1.5万
DuChainOfResponsibilityPattern::RaiseSalaryRequest emp2Req("李四", 3500);//李四要求加薪3千5
DuChainOfResponsibilityPattern::RaiseSalaryRequest emp3Req("王二", 800);//王二要求加薪8百
//看看每位员工的加薪请求由职责链中的哪个对象(部门经理、技术总监、总经理)来处理,从职责链中排在最前面的接收者(pzzlinkobj1)开始
pzzlinkobj1->processRequest(emp1Req);
pzzlinkobj1->processRequest(emp2Req);
pzzlinkobj1->processRequest(emp3Req);
//(4)释放资源
delete pzzlinkobj1;
delete pzzlinkobj2;
delete pzzlinkobj3;
}
/// <summary>
///
/// </summary>
void GeovinDu::displayWordSimple()
{
//(1)创建出职责链中包含的各个对象(性敏感词过滤器、脏话词过滤器、政治敏感词过滤器)
DuChainOfResponsibilityPattern::ParentWordFilter* pwflinkobj1 = new DuChainOfResponsibilityPattern::SexyWordFilter();
DuChainOfResponsibilityPattern::ParentWordFilter* pwflinkobj2 = new DuChainOfResponsibilityPattern::DirtyWordFilter();
DuChainOfResponsibilityPattern::ParentWordFilter* pwflinkobj3 = new DuChainOfResponsibilityPattern::PoliticsWordFilter();
//(2)将这些对象串在一起构成职责链(链表),现在职责链中pwflinkobj1排在最前面,pwflinkobj3排在最后面
pwflinkobj1->setNextChain(pwflinkobj2);
pwflinkobj2->setNextChain(pwflinkobj3);
pwflinkobj3->setNextChain(nullptr);
string strWordFilterResult = pwflinkobj1->processRequest("你好,这里是过滤敏感词测试范例"); //从职责链中排在最前面的接收者(pwflinkobj1)开始,processRequest的参数代表的是聊天内容
cout << "对敏感词过滤后的结果为:" << strWordFilterResult << endl;
//(3)释放资源
delete pwflinkobj1;
delete pwflinkobj2;
delete pwflinkobj3;
}
}
调用:
/*****************************************************************//**
* \file ConsoleDuChainOfResponsibilityPattern.cpp
* \brief 责任链模式Chain Of Responsibility Pattern 亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility C++ 14 行为模式
* 2023年6月6日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社
* \author geovindu
* \date June 2023
*********************************************************************/
// ConsoleDuChainOfResponsibilityPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _UNICODE
#include <iostream>
#include "GeovinDu.h"
using namespace std;
using namespace DuChainOfResponsibilityPattern;
using namespace DuJewelryChainOfResponsibilityPattern;
int main()
{
std::cout << "Hello World!涂聚文 Geovin Du\n";
GeovinDu geovin;
geovin.displaySimple();
cout << "******************" << endl;
geovin.displayDuSimple();
cout << "*****" << endl;
geovin.displayWordSimple();
system("pause");
return 0;
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE
输出
Hello World!涂聚文 Geovin Du 张三的加薪要求为:15000元,总经理审批通过! 李四的加薪要求为:3500元,技术总监审批通过! 王二的加薪要求为:800元,部门经理审批通过! ****************** 张三的加薪要求为:15000元,总经理审批通过! 李四的加薪要求为:3500元,技术总监审批通过! 王二的加薪要求为:800元,部门经理审批通过! ***** 通过与词库比对,在strWord中查找"性"敏感词并用XXX来替换! 通过与词库比对,在strWord中查找"脏话"敏感词并用YYY来替换! 通过与词库比对,在strWord中查找"政治"敏感词并用ZZZ来替换! 对敏感词过滤后的结果为:你好,这里是过滤敏感词测试范例XXXYYYZZZ 请按任意键继续. . .

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号