设为首页】 【加入收藏】 【网站地图】 【商品折扣
娱乐一生 娱乐明星
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
首页  |  java  |  .NET  |  C/C++  |  网页技术  |  php  |  asp  |  delphi  |  VC  |  VB开发  |  游戏开发  |  软件工程  |  Power Builder  |  Linux开发  |  Windows开发技巧
当前位置:首页 >> VC文摘 >> 用Viusal C++实现字符串分割函数_VC开发_开发语言_软件开发

用Viusal C++实现字符串分割函数_VC开发_开发语言_软件开发 -

  一、用写程序的时候,读取文本形式的配置文件,需要对字符串进行分析,如“姓名=刘德华;年龄=40;国籍=中国;”,Delphi有现成的分析函数,只要给出分割符“;”就行了。后来用做相似的字符串分析,VC没有提供这样的函数,上网搜了一下也没有找到,所以自己写了一个函数,虽然函数比较简单,但是或许有朋友需要,刚好可以提供方便!

  二、函数代码:

//参数说明:
source: 需要分割的源字符串;
dest: 存储分割后的各个字符串变量的目标变量;
division:分割字符

void decodeCString(CString source, CStringArray& dest, char division)
{
 dest.RemoveAll();
 for(int i=0;i〈 source.GetLength();i++)
 {
  if(source.GetAt(i)== division)
  {
   dest.Add(source.Left(i)); //去掉右边
   for(int j=0;j 〈 (dest.GetSize()-1);j++)
   {
    dest[dest.GetSize()-1] = dest[dest.GetSize()-1].Right(dest[dest.GetSize()-1].GetLength()-dest[j].GetLength()-1); //去掉左边
   }
  }
 }
}


五、添加服务主线程函数和控制函数

  这里调用ReterServiceCtrlHandler来注册服务的控制函数,这里要设置status.dwControlsAccepted为SERVICE_ACCEPT_STOP,否则你不能控制这个服务的状态。

void WINAPI ServiceMain()
{
 // Register the control request handler

 status.dwCurrentState = SERVICE_START_PENDING;
 status.dwControlsAccepted = SERVICE_ACCEPT_STOP;//这个要使用,否则你不能控制

 //注册服务控制

 hServiceStatus = RegisterServiceCtrlHandler(szServiceName, ServiceStrl);
 if (hServiceStatus == NULL)
 {
  LogEvent(_T("Handler not installed"));
  return;
 }
 SetServiceStatus(hServiceStatus, &status);
 status.dwWin32ExitCode = S_OK;
 status.dwCheckPoint = 0;
 status.dwWaitHint = 0;
 status.dwCurrentState = SERVICE_RUNNING;
 SetServiceStatus(hServiceStatus, &status);

 //模拟服务的运行,10后自动退出。应用时将主要任务放于此即可

 int i = 0;
 while (i < 10)
 {
  Sleep(1000);
  i++;
 }
 //

 status.dwCurrentState = SERVICE_STOPPED;
 SetServiceStatus(hServiceStatus, &status);
 LogEvent(_T("Service stopped"));
}
  六、在主线程函数里注册控制函数和程序执行主体

void WINAPI ServiceMain()
{
 …

 //如上,这里主要是说明这就是程序的执行体
 //模拟服务的运行,10后自动退出。应用时将主要任务放于此即可

 int i = 0;
 while (i < 10)
 {
  Sleep(1000);
  i++;
 }
 …
}
  七、在main函数里注册添加安装、删除、注册主函数

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,

int nCmdShow)
{
 Init();
 dwThreadID = ::GetCurrentThreadId();
 SERVICE_TABLE_ENTRY st[] =
 {
  { szServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
  { NULL, NULL }
 };

 if (stricmp(lpCmdLine, "/install") == 0)
 {
  Install();
 }
 else if (stricmp(lpCmdLine, "/uninstall") == 0)
 {
  Uninstall();
 }
 else
 {
  if (!::StartServiceCtrlDispatcher(st))
  {
   LogEvent(_T("Register Service Main Function Error!"));
  }
 }
 return 0;
}
  八、总结

  其它做一个服务程序并难,主要是懂得程序的执行体放于哪里?和注册程序的主函数和注册控制函数,如果这两个没有注册的话,你就程序就不知道如何去控制了。status.dwControlsAccepted = SERVICE_ACCEPT_STOP;这个也重要,如果你没有设置的话,那么服务就不会受你控制了。

  需要的朋友可以联系我(niyingny@hotmail.com)




 

娱乐图摘

更多 >>

靓丽清纯美女meimei

美女私房全裸照
导演劝女演员脱衣服(视频)

大胆火辣人体艺术写真(图)

黑丝妹妹热辣诱惑-丝袜美女妹妹

PLMM 漂亮妹妹图集-妹妹图库

全球美女图库-美女集中营

52MM 我爱漂亮妹妹-制服妹妹诱惑

图王图库-世界美女明星图片资料库
美女写真集锦

激情两性-解密性生活
浴室MM湿身内衣诱惑
邻家小妹洗澡被偷拍(视频)

热点文章

更多

· 用Viusal C++实现字符串分割函数_VC开发_开发语言
· 字符串16进制转10进制_VC开发_开发语言_软件开发
· VC/VB 进行图像数据存储数据库心得_VC开发_开发语言_
· VC学习:虚拟按键的总结及示例_VC开发_开发语言_软件开发
· Visual C++6.0 API函数操作技巧集_VC开发_
· Visual C++2003中DLL初学者指南_VC开发_开
· VC利用boost库解析正则表达式_VC开发_开发语言_软件
· 用VC++建立Service服务应用程序_VC开发_开发语言
· 深入浅出Win32多线程程序设计之线程通信_VC开发_开发语
· 深入浅出VC++串口编程之基于Win32 API_VC开发_

热点文章

更多