用了三种方法...
#if 0
void StringTokenize(const std::string& strSrc, const std::string& strDelimit, std::vector<std::string>& vecSub)
{
if (strSrc.empty() || strDelimit.empty())
{
throw "tokenize: empty string\n";
}
vecSub.clear();
std::size_t nCurPos = 0;
std::size_t nNextPos = 0;
while ((nNextPos = strSrc.find_first_of(strDelimit, nCurPos)) != std::string::npos)
{
if (nNextPos - nCurPos > 0)
{
vecSub.push_back(strSrc.substr(nCurPos, nNextPos - nCurPos));
}
nCurPos = nNextPos + 1;
}
// Add the last one
std::string strLast = strSrc.substr(nCurPos);
if (!strLast.empty())
vecSub.push_back(strSrc.substr(nCurPos));
}
void StringToken(char *strToken, const char *strDelimit, std::vector<std ......
用了三种方法...
#if 0
void StringTokenize(const std::string& strSrc, const std::string& strDelimit, std::vector<std::string>& vecSub)
{
if (strSrc.empty() || strDelimit.empty())
{
throw "tokenize: empty string\n";
}
vecSub.clear();
std::size_t nCurPos = 0;
std::size_t nNextPos = 0;
while ((nNextPos = strSrc.find_first_of(strDelimit, nCurPos)) != std::string::npos)
{
if (nNextPos - nCurPos > 0)
{
vecSub.push_back(strSrc.substr(nCurPos, nNextPos - nCurPos));
}
nCurPos = nNextPos + 1;
}
// Add the last one
std::string strLast = strSrc.substr(nCurPos);
if (!strLast.empty())
vecSub.push_back(strSrc.substr(nCurPos));
}
void StringToken(char *strToken, const char *strDelimit, std::vector<std ......
1、在C文件中调用C++文件中定义的文件
直接的方法是在C++ 文件的头部添加如下代码段:
extern "C"
{
int API(int A);
}
2、C++接口的方法
在C++中调用C的函数,在C头文件中加入如下代码:
#ifdef __cplusplus // 开始
extern "C" {
#endif
......
#ifdef __cplusplus // 结束
}
#endif ......
1、在C文件中调用C++文件中定义的文件
直接的方法是在C++ 文件的头部添加如下代码段:
extern "C"
{
int API(int A);
}
2、C++接口的方法
在C++中调用C的函数,在C头文件中加入如下代码:
#ifdef __cplusplus // 开始
extern "C" {
#endif
......
#ifdef __cplusplus // 结束
}
#endif ......
输入一个英文语句(不记标点符号,单词之间只有一个空格),再逆向输出
例如:I am game boy
boy game am I
#include<stdio.h>
#include<string.h>
int f(char,char,int,int);
int main()
{
char a[80]={0},b[80]={0},c[80]={0};
int i,n,m=0;
printf("Input the sentence\n");
gets(a);
for(i=0;i<80;i++)
{
if(a[i]=='\0')
{
n=i-1;
break;
}
}
f(a,b,0,n);
for(i=0;i<80;i++)
c[i]=b[i];
for(i=0;i<80;i++)
{
if(b[i]==' '||b[i]=='\0')
{
f(b,c,m,i-1);
m=i+1;
}
}
printf("%s\n",c);
return 0;
}
int f(char x[],char y[],int p,int q)
{
int t=q;
for(;p<=t;p++,q--)
y[p]=x[q];
return 0;
}
......
// & 与,将指定位置设置为0 | 或,将指定位置设置为1
//注: 只针对纯字母的情况
#include <stdio.h>
#include <string>
int main()
{
char str[6] = "xxing";
std::string str1 = "INGXX";
for(int i = 0; i < 5; i++)
{
str[i] &= 0xdf;// 转大写 1101 1111
str1[i] |= 0x20;// 转小写 0010 0000
}
printf("xxing:%s\nINGXX:%s\n", str, str1.c_str());
return 0;
}
......
// & 与,将指定位置设置为0 | 或,将指定位置设置为1
//注: 只针对纯字母的情况
#include <stdio.h>
#include <string>
int main()
{
char str[6] = "xxing";
std::string str1 = "INGXX";
for(int i = 0; i < 5; i++)
{
str[i] &= 0xdf;// 转大写 1101 1111
str1[i] |= 0x20;// 转小写 0010 0000
}
printf("xxing:%s\nINGXX:%s\n", str, str1.c_str());
return 0;
}
......
修改makefile,在LIBS里面加上-lmemcached,比如原来 gcc test.c,现在 gcc test.c -lmemcached。这个库就是libmemcached提供的。
然后添加#include<libmemcached/memcached.h>,这个文件也是libmemcached提供的。
主函数里面需要添加:
memcached_st *memc;
uint32_t flags;
memcached_return rc;
memcached_server_st *servers;
memc= memcached_create(NULL);
servers= memcached_servers_parse("127.0.0.1:12300");
memcached_server_push(memc, servers);
memcached_server_list_free(servers);
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 0);
这就是初始化的全部代码,可以设置很多东西,不过我现在只要一个服务器,就看一句话:
servers= memcached_servers_parse("127.0.0.1:12300");
这就是指明要连接到位于127.0.0.1监听12300端口的memcached程序. 其他都不管。
最后用一段修改后的代 ......
修改makefile,在LIBS里面加上-lmemcached,比如原来 gcc test.c,现在 gcc test.c -lmemcached。这个库就是libmemcached提供的。
然后添加#include<libmemcached/memcached.h>,这个文件也是libmemcached提供的。
主函数里面需要添加:
memcached_st *memc;
uint32_t flags;
memcached_return rc;
memcached_server_st *servers;
memc= memcached_create(NULL);
servers= memcached_servers_parse("127.0.0.1:12300");
memcached_server_push(memc, servers);
memcached_server_list_free(servers);
memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 0);
这就是初始化的全部代码,可以设置很多东西,不过我现在只要一个服务器,就看一句话:
servers= memcached_servers_parse("127.0.0.1:12300");
这就是指明要连接到位于127.0.0.1监听12300端口的memcached程序. 其他都不管。
最后用一段修改后的代 ......
c指针的运算有时候还是很迷惑人的。
例如:
struct student {
int num;
int score;
int length;
};
struct student *pt;
pt = (struct student *) malloc(sizeof(struct student));
pt->num = 1;
pt->score = 90;
pt->length = 3 * sizeof(int);
printf("pt length:%d\n", *pt);
pt = (int *)pt + 1;
printf("pt length:%d\n", *pt);
pt = (int *)pt + 1;之后pt的类型还是struct student,长度还是12。
强制转换类型运算符()的作用是:生成一个int *类型的pt,但是pt原来的类型还是没变,
换句话说就是,强制转换类型运算符只在运算时起作用,并不影响原来的值。 ......