C/C 语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C 语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。
6.1.1 封装字符串操作
字符串与整数: 将字符串转为数值可以使用sscanf()
函数,将数值转为字符串可以使用sprintf()
函数.
#include <iostream>
#include <string>
int main(int argc, char* argv[])
{
// int -> string
char szBuf[32] = { 0 };
int number = 100;
sprintf(szBuf, "%d", number);
std::cout << "字符串: " << szBuf << std::endl;
// string -> int
sscanf(szBuf, "%d", &number);
std::cout << "整数: " << number << std::endl;
return 0;
}
字符串切割: 模拟实现Split()
函数对特定字符串使用特定符号进行的切割,切割后的数据分别放入新的数组中.
#include <iostream>
#include <Windows.h>
#include <string.h>
// 实现字符串切割
int split(char dst[][80], char* str, const char* spl)
{
int n = 0;
char* result = NULL;
result = strtok(str, spl);
while (result != NULL)
{
strcpy(dst[n ], result);
result = strtok(NULL, spl);
}
return n;
}
int main(int argc,char *argv[])
{
char src_string[] = "what is you name? hello lyshark ?";
char dst[10][80];
// 以空格进行切割字符串并将结果存入dst
int cnt = split(dst, src_string, " ");
for (int i = 0; i < cnt; i )
{
std::cout << "切割后: " << dst[i] << std::endl;
}
return 0;
}
字符串分块: 循环将传入的字符串按照指定长度切片处理,切片后返回到一个二维数组中存储.
代码语言:c复制#include <iostream>
#include <Windows.h>
using namespace std;
// 实现对字符串指定位置进行剪切
char* Cat(char* buffer, int offset, int length)
{
char Split[100] = { 0 };
memset(Split, 0, 100);
strncpy(Split, buffer offset, length);
return Split;
}
// 循环剪切字符串
int CatSplit(char *buf, char len ,OUT char Split[][1024])
{
int count = 0;
// 每次剪切len大小
for (int x = 0; x < strlen(buf); x = len)
{
char* ref = Cat(buf, x, len);
strcpy(Split[count], ref);
count = 1;
}
return count;
}
int main(int argc, char* argv[])
{
char buf[1024] = "The National Aeronautics and Space Administration";
char Split[100][1024] = { 0 };
// 切割并获取切割计数器
int count = CatSplit(buf, 100, Split);
std::cout << "切割次数: " << count << std::endl;
// 输出切割计数器
for (int x = 0; x < count; x )
{
std::cout << Split[x] << std::endl;
}
return 0;
}
字符串过滤: 用户传入一个字符串,以及传入需要过滤的字符,自动过滤掉字符串内的所有过滤字符.
代码语言:c复制#include <iostream>
#include <windows.h>
// 删除指定字符
void del_char(char Buffer[], char ch)
{
int i, j;
for (i = 0, j = 0; *(Buffer i) != '