在进行字符串操作的时候需要添加string头文件声明
#include <string.h> (<string>不加.h也可以,但是这个是c++版本的头文件)
1.求字符串长度:
char类型字符串: 使用strlen()函数进行字符串的长度计算;
char cBuf[] = "wolven";
int nLength = strlen(cBuf); #strlen计算字符串长度(不含终止符00)
printf("char Length:%d\n", nLength);
wchar_t类型字符串:使用wcslen()函数进行wchar_t型字符串的长度计算。
#include <string.h> #wcslen()在string.h头文件中被包含
wchar_t wcBuf[] = L"wolvenchan";#不加L表示char类型字符串
int wcLength = wcslen(wcBuf); #wcslen()用来计算wchar_t类型字符串长度
printf("wchar_t Length:%d\n", wcLength);
2.字符串拼接:
char 类型 sprintf()
wchar_t 类型 wsprintf()
char cBuf[] = "wolven";
char cBufA[] = "Hello";
int nLength = strlen(cBuf);
char cBuffer[100]; #声明一个数组用于存储拼接后的字符串
sprintf(cBuffer, "%s %s %d", cBufA,cBuf,nLength);#将cBufA,cBuf以及cBuf字符串长度进行拼接
printf("%s", cBuffer);#输出拼接内容
注意:sprintf是一个不安全的函数,在使用的时候会警告并且报警,这个时候可以在预处理器定义中将宏定义_CRT_SECURE_NO_WARNINGS添加进去,抑制报警。
(解决方案中右击项目->属性->C/C++->预处理器->预处理器定义添加即可)
其余操作
strcat字符串拼接:
char *strcat(char *dest, const char *src);
strcat(数组1,要进行拼接的字符串) ;
拼接两次的话会覆盖前一段字符串的结束符。
如果在空数组空间不够大,则会造成空间越界问题。
strcat函数比较不安全,所以微软也推出了strcat_s函数,但是这个函数不具备跨平台性,所以在编写恶意程序时不推荐使用。
strcpy字符串拷贝(也需要进行空间审查,否则会有越界风险;)
strcpy(存放拷贝后字符串的数组,要拷贝字符串);
Eg:
char src[50], dest[50];
strcpy(src, "This is source");
strcpy(dest, "This is destination");
strcmp()字符串比较(字符串是否一样;长度+内容)
strcmp(字符串1,字符串2);
结果0 表示两个字符串一样(一致)
1 表示两个字符串不一样(不一致)
Eg:
if (!strcmp(sStrA, sStrB))
{
printf("Both the Strings are the same! ");
}
else
{
printf("the two Stings are different!");
}
两个字符串完全一样结果才为0,否则结果为1.
使用的时候,可以先判断存放拼接字符串的数组长度,以免造成拷贝或者多次拼接造成空间越界
判断的方式:sizeof()判断数据空间多长
strlen()判断有效字符串多长 =>得出空余部分
计算要拼接/拷贝进来的字符由多长查看是否足够存放(虽然麻烦但是通用)