【导语】“请食鸡肋”通过精心收集,向本站投稿了5篇C++常用字符串处理函数及使用示例.net,以下是小编收集整理后的C++常用字符串处理函数及使用示例.net,仅供参考,希望对大家有所帮助。
篇1:C++常用字符串处理函数及使用示例.net
char *strcpy(char *s1, const char *s2) 将字符串s2复制到字符串数组s1中,返回s1的值 char *strncpy(char *s1, const char *s2, size_t n) 将字符串s2中最多n个字符复制到字符串数组s1中,返回s1的值 char *strcat(char *s1, const char *s2) 将字符串s2添
char *strcpy(char *s1, const char *s2)
将字符串s2复制到字符串数组s1中,返回s1的值
char *strncpy(char *s1, const char *s2, size_t n)
将字符串s2中最多n个字符复制到字符串数组s1中,返回s1的值
char *strcat(char *s1, const char *s2)
将字符串s2添加到字符串s1的后面,s2的第一个字符重定义s1的null终止符。返回s1的值
char *strncat(char *s1, const char *s2, size_t n)
将字符串s2中最多n个字符添加到字符串s1的后面。s2的第一个字符重定义s1的null终止符。返回s1的值
int strcmp(const char *s1, const char *s2)
比较字符串s1和字符串s2。函数在s1等于、小于或大于s2时分别返回0、小于0或者大于0的值
int strncmp(const char *s1, const char *s2, size_t n)
比较字符串s1中的n个字符和字符串s2。函数在s1等于、小于或大于s2时分别返回0、小于0或者大于0的值
char * strtok(char *s1,const char *s2)
用一系列strtok调用将s1字符串标记化(将字符串分成各个逻辑组件,如同一行文本中的每个单词),用字符串s2所包含的字符分隔。 首次调用时包含s1为第一个参数,后面调用时继续标记化同一字符串,包含NULL为第一个参数。每次调用时返回当前标记指针。如果函数调用时不再有更多标记,则返回NULL
size_t strlen(const char *s)
确定字符串长度,返回null终止符之前的字符数
使用示例:
//源代码在Visual c++6.0环境下编译通过
#include
#include
int main
{
char str1[50] = “Happy birthday to ”, str2[] = “coffeehu”;
char temp1[100],temp2[6], * temp;
char str[] = “This is a sentence with 7 tokens”;
strcpy(temp1, str1);
strncpy(temp2, str1, 5);
temp2[5] = '\\0';
cout << “strcpy result: ” <
cout << “strncpy result: ” << temp2 << “\\n”;
cout << “strcat result: ” << strcat(str1, str2) << “\\n”;
cout << “strncat result: ” << strncat(str1, str2, 6) <<“\\n”;
cout << “strcmp result: ” << strcmp(temp2,“Happ”) <<“\\n”;
cout << “strncmp result: ” << strncmp(str1,“Happy”,5) <<“\\n”;
//strtok function eg.
temp = strtok(str, “ ”);
while(temp != NULL)
{
cout << temp <<'\\n';
temp = strtok(NULL, “ ”);
}
cout << “strlen result: ” << strlen(str2) <<“\\n”;
return 0;
}
原文转自:www.ltesting.net
篇2:c语言中字符串函数的使用
#include
#include
/*
char s1[]=“I am a student”;
char s2[20]=“teacher”;
char s3[]=“student”;
int result;
char s4[20],*p;
1.串的长度
int strlen(char *str):
printf(“%d\\n”,strlen(s1));//长度为14
printf(“%d\\n”,strlen(s2));//长度为7
2.复制
char *strcpy(char *str1,char *str2):
strcpy(s4,s2);//把s2复制给s4
printf(“%s\\n”,s4);//输出teacher
3.比较
int strcmp(char *str1,char *str2):
result=strcmp(s2,s3);
printf(“%d\\n”,result);//s2>s3
4.字符串定位
char *strchr(char *str,char ch);
p=strchr(s1,'s');//p指向在s1中字符's'的位置
printf(“%s\\n”,p);//输出student
5.子串查找
char *strstr(char *s1,char *s2);
p=strstr(s1,s3);//p指向在s1中字符's'的位置
printf(“%s\\n”,p);//输出student
6.连接
char * strcat(char *str1,char *str2):
strcat(s2,s3);
printf(“%s\\n”,s2);//输出teacherstudent
*/
void ReverseName(char *name,char *newName){
char *p;
p=strchr(name,' ');//字符定位
*p='\\0';
printf(“%s\\n”,name);
printf(“%s\\n”,p);
strcpy(newName,p+1);//复制
printf(“--%s\\n”,newName);
strcat(newName,“,”);//连接
strcat(newName,name);//连接
*p=' ';
printf(“%s\\n”,name);
}
int main(){
char name[]=“jie wang”,newName[30];
ReverseName(name,newName);
printf(“hello world\\n”);
return 0;
}
篇3:jstl 字符串处理函数
作者: 字体:[增加 减小] 类型:转载
最近用jstl1.0 的时候经常要在页面上对字符串做改动,在网上找了一个写的不错的,借鉴一下
JSTL使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及session中的数据的访问非常方便,但是我们在实际应用中经常需要在页面调用对象的某些方法,例如我需要调用字符串的length方法来获取字符串的长度时,在以往的开发过程中我们必须把对象先转为String类,然后在调用其length方法,这样的代码繁琐而且容易出错,
因此JSTL内置了几个用于字符串操作的方法,可以直接在表达式中使用,大大的简化了代码,提供代码的可读性。在JSTL的表达是中要使用一个函数,其格式如下
${ns:methodName(args....)}
在使用这些函数之前必须在JSP中引入标准函数的声明
<%@ taglib prefix=“fn” uri=“java.sun.com/jsp/jstl/functions” %>
下面是JSTL中自带的方法列表以及其描述
函数名函数说明使用举例contains判断字符串是否包含另外一个字符串
获取从某个字符所在位置开始的子串
${fn:substringAfter(zip, “-”)}substringBefore获取从开始到某个字符所在位置的子串${fn:substringBefore(zip, “-”)}toLowerCase转为小写${fn.toLowerCase(product.name)}toUpperCase转为大写字符${fn.UpperCase(product.name)}trim去除字符串前后的空格${fn.trim(name)}篇4:C语言 字符串的内存拷贝处理函数
对于字符串来说,我们运用字符串 C语言 字符串的内存拷贝处理函数
这个是
void *memcpy(void *dest,const void *src,size_t count);
与strcpy不同的就是添加了第三个参数,确定操作的字节数,然后参数类型还有返回类型都是void*
,这表示他可以拷贝任意类型的数据。
然后我们看一下实现:
memcpy:
void *my_memcpy(void *str,const void *Dstr,int count) //从内存地址开始改变,并确定改变长度,所以用万能类型去接受{ char *pstr = (char *)str; char *pDstr = (char *)Dstr;assert((str!=NULL) && (Dstr != NULL)); if(str == Dstr) //位置相同情况下直接返回需要改变的 return (char *)Dstr; while(count-- >0){*pstr++ = *pDstr++;} return str;}
然后会出现一个问题,如果我们拷贝的数据中Dstr的起始位置在STR操作之间,那么在改变str时会出现副作用,将导致我们的拷贝结果不正确,所以我们应该考虑到会覆盖的情况,
在函数库中有一个memmove函数。
memmove:
void *my_memmove(void *pst,const void *Dpst,int size){ void *p = pst; char *pstA = (char *)pst; char *pstB = (char *)Dpst;assert((pst != NULL) &&(Dpst != NULL)); if(pstB
就是遇到被拷贝的空间起始处在拷贝空间中,将会遇到拷贝内存覆盖的现象。在这种情况下我们将考虑从尾部进行拷贝。所以进行了判断。
篇5:使用c函数实现的常用函数
/* strcat的实现 */
#include
char* my_strcat (char* strDest,const char* strSrc)
{
char *ret = strDest;
assert ((strDest != NULL) && (strSrc != NULL));
while (*strDest != '\\0')
{
strDest++;
}
while ((*strDest++ = *strSrc++) != '\\0')
{
}
*strDest = '\\0';
return ret;
}
/* strcpy的实现 */
#include
char* my_strcpy (char* strDest, const char* strSrc)
{
assert ((strDest != NULL) && (strSrc != NULL));
char* address = strDest;
while ((*strDest++ = *strSrc++) != '\\0')
{
}
return address;
}
/* split的实现 */
int my_split (char *strOld, char **strNew)
{
assert ((strOld != NULL) && (strNew != NULL));
char *emp = *strNew;
int res = 0;
for (;;)
{
if ((*strOld >= '0') && (*strNew <= '9'))
{
int j = *strOld - '0';
res = res * 10 + j;
strOld++;
}
else if ((*strOld >= 'A') && (*strOld <= 'z'))
{
*emp++ = *strOld;
strOld++;
}
else
{
break;
}
}
return res;
}
/* strcmp的实现 */
int my_strcmp (const char *strDest, const char* strSrc)
{
while (*strDest)
{
if (*strDest != *strSrc)
{
return (*strDest - *strSrc) >0 ? 1 : -1;
}
strDest++;
strSrc++;
}
if (*strDest)
{
return -1;
}
else
{
return 0;
}
}
/* string 转换为int */
int my_atoi (const char *str)
{
int result = 0;
int sign = 1;
if ('0' <= str[0] && str[0] <= '9' || (str[0] == '-') || (str[0] == '+'))
{
if (str[0] == '+' || str[0] == '-')
{
if (str[0] == '-')
{
sign = -1;
}
else
{
str++;
}
}
}
while (*str>='0' && *str<='9')
{
result = result * 10 + (*str - '0');
str++;
}
return result * sign;
}
/* int 转换为16进制 */
void my_itoa (char *buffer, unsigned int num)
{
int i;
unsigned int tmp;
buffer[0] = '0';
buffer[1] = 'x';
i = 9;
while (num)
{
tmp = num % 16;
if (tmp >= 10)
{
buffer[i] = tmp - 10 + 'A';
}
else
{
buffer[i] = tmp + '0';
}
i--;
num /= 16;
}
while (i >= 2)
{
buffer[i--] = '0';
}
buffer[10] = 0;
}
/* 字符串逆序 */
int str_reversed(char *str)
{
int i = 0;
char temp = 0;
char *ps;
char *pe;
if (!str)
{
return -1;
}
ps = a;
while (*a != 0)
{
a++;
}
pe = a;
for (i=0; i<(pe-ps)/2;i++)
{
temp = *(ps+i);
*(ps+i) = *(pe-i-1);
*(pe-i-1) = temp;
}
return 0;
}
/* 冒泡排序 */
void bubble_sort (int arr[], int size)
{
int i,j,flag,temp;
for (i=1; i<=size-1; i++)
{
flag = 0;
for (j=0; j<=size-i-1; j++)
{
if (arr[j] >arr[j+1])
{
flag = 1;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
if (flag == 0)
{
break;
}
}
}
}
/* 链表逆序*/
list reverse_list (list n)
{
if (!n)
{
return n;
}
list cur = n.next;
list pre = n;
list tmp;
pre.next = NULL;
while (NULL != cur.next)
{
tmp = cur;
tmp.next = pre;
pre = tmp;
cur = cur.next;
}
return tmp;
}
/* 判断是否是质数(素数) */
int is_prime (int n)
{
int i;
if (n < 2) return 0;
if (n == 2) return 1;
//判断时只需判断到n的开方即可
for (i=2; i*i<=n; i++)
{
if (n%i == 0) return 0;
}
return 1;
★ net笔试题
★ 函数课件
★ 函数指针
C++常用字符串处理函数及使用示例.net(锦集5篇)




