惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
博客园_首页
宝玉的分享
宝玉的分享
The Cloudflare Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
T
Tailwind CSS Blog
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
罗磊的独立博客
F
Fortinet All Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
Simon Willison's Weblog
Simon Willison's Weblog
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Scott Helme
Scott Helme
B
Blog
M
MIT News - Artificial intelligence
K
Kaspersky official blog
H
Help Net Security
V
Vulnerabilities – Threatpost
C
CXSECURITY Database RSS Feed - CXSecurity.com
Engineering at Meta
Engineering at Meta
博客园 - 【当耐特】
L
Lohrmann on Cybersecurity
P
Privacy & Cybersecurity Law Blog
Project Zero
Project Zero
The Hacker News
The Hacker News
B
Blog RSS Feed
T
Tor Project blog

博客园 - .net技術

c语言难点 线程同步(转) stl学习(转帖2) stl 学习(转帖) visual C++ 6.0开发工具与调试 vc动态装载动态库 详细的MySQL C API CString,string,char*的综合比较 在Linux下安装和使用MySQL 人际关系的55个绝招 一个封装的socket类 一个linux下c++程序 一个网络扫描程序 VC数字图像处理编程 ASCII 一些函数 防盗链IHttpHandler(转自垃圾猪) 按比例显示图片大小 回车改变焦点
makefile
.net技術 · 2008-01-14 · via 博客园 - .net技術

一.生成库文件
cat test.h
#ifndef __TEST_H__
#define __TEST_H__
#include <string.h>

char CmdStr[200][200];

class TEST
{
    public:
              TEST();
        virtual ~TEST();
    public:
              int SplitBufByChar( char *buf1, char ch, char tc,int stno);
};
#endif
cat  test.cpp
#include "test.h"

TEST::TEST()
{
  for(int i=0;i<200;i++)
  {
    CmdStr[i][0]='\0';
  }
   
}
TEST::~TEST()
{
  for(int i=0;i<200;++i)
  {
    CmdStr[i][0]='\0';
  }
}

int TEST::SplitBufByChar( char *buf1, char ch, char tc,int stno)
{
  char *ss0, *ss1;
  int  i,j;
  char T[200][500];

  ss0 = buf1; i = 0;
  while ( (ss1=strchr( ss0, ch )) != NULL )  {
     *ss1 = 0; strcpy( T[stno+i], ss0 );
     i++; ss0= ss1+1; *ss1= ch;
  }

  if ( tc=='C' ) for (j=stno;j<stno+i;j++) strcpy(CmdStr[j],T[j]);
  return( i );
}
cat makefile
DEST=libtest.a
OBJS=test.o
CC= g++
CPPFLAGS = -O2 -Wall
SHAREFLAGS = -shared -fPIC
INCLUDES = -I.

$(DEST) : $(OBJS)
        $(CC) $(SHAREFLAGS) $(INCLUDES) $(CPPFLAGS) -o $@ $^

test.o : test.cpp test.h
        $(CC) $(INCLUDES) $(CPPFLAGS) -c $< -o $@

二.使用动态库
cat protest.cpp
#include "test.h"
#include <string>
#include <vector>

using namespace std;


typedef struct{
    int id;
    string name;
}STUDENT;

typedef std::vector <STUDENT> STRSET;

//extern char CmdStr[200][200];

int main()
{
 char sc[200];


 TEST test1;
 STUDENT stdt1,stdt2,stdt3;
 

 STRSET settest;
 stdt1.id=200;
 stdt1.name="GPRS100~SMS-03-17~新GPRS100元套餐办理~";
 stdt2.id=100;
 stdt2.name="GPRS200~SMS-03-18~新GPRS100元套餐办理~";
 stdt3.id=300;
 stdt3.name="GPRS300~SMS-03-19~新GPRS100元套餐办理~";


 settest.push_back(stdt1);
 settest.push_back(stdt2);
 settest.push_back(stdt3);

 for(std::vector <STUDENT>::iterator it=settest.begin();it !=settest.end();it++)
 {
  sprintf(sc,"%s",((STUDENT)*it).name.c_str());
   
        
        test1.SplitBufByChar(sc,'~','C',1);

        //test1.~TEST();
  printf("cmdstr[1]:%s\n",CmdStr[1]);
        printf("cmdstr[2]:%s\n",CmdStr[2]);
        printf("cmdstr[3]:%s\n",CmdStr[3]);
 }

 return 0;

}

cat makefile
DEST=protest
OBJS=protest.o
CC= g++
CPPFLAGS = -O2 -Wall
INCLUDES = -I. -I../libtest/
LIBS =-L../libtest/ -ltest

$(DEST) : $(OBJS)
        $(CC) $(INCLUDES) $(LIBS) $(CPPFLAGS) -o $@ $^

protest.o : protest.cpp
        $(CC) $(INCLUDES) $(CPPFLAGS) -c $< -o $@