主要内容 #
这节课,我们主要来介绍一些C/C++中内置的一些字符串处函数。
一、char* strcat(char* dst, const char* src) #
函数功能:
- 将字符串 src 连接到字符串 dst 后面。 dst 的值被改变了。
- 函数返回 字符串 dst 的指针。
详见下面例程:
#include < iostream > #include < cstring > using namespace std; int main() { char dashima1[] = "aaa"; char dashima2[] = "bbbb"; char* dashima3; cout << "sizeof(dashima1)=" << sizeof(dashima1)<< endl; cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; dashima3 = strcat(dashima1, dashima2); // 【注意理解】1. 上面 dashima1 的变化;2. dashima3 的值 cout << "sizeof(dashima1)=" << sizeof(dashima1)<< endl; cout << "dashima1=" << dashima1 << endl; // 【注意理解】字符串和字符数组不同,字符串的长度不能通过 sizeof 计算 cout << "dashima2=" << dashima2 << endl; cout << "dashima3="; for(int i=0; i < 7; ++i) { cout << dashima3[i]; } cout << endl; return 0; }
输出结果:
sizeof(dashima1)=4 dashima1=aaa dashima2=bbbb sizeof(dashima1)=4 dashima1=aaabbbb dashima2=bbbb dashima3=aaabbbb
注意:
- 将字符串 src 连接到字符串 dst 后面。 dst 的值被改变了。
- 函数返回 字符串 dst 的指针。
- 字符串和字符数组不同,字符串的长度不能通过 sizeof 计算。
二、char* strncat(char* dst, const char* src, const int n) #
函数功能:
- 将字符串 src 的前 n 个字符,连接到字符串 dst 后面。 dst 的值被改变了。
- 函数返回 字符串 dst 的指针。
详见下面例程:
#include < iostream > #include < cstring > using namespace std; int main() { char dashima1[] = "aaa"; char dashima2[] = "bbbb"; char* dashima3; cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; dashima3 = strncat(dashima1, dashima2, 2); // 【注意理解】1. 上面 dashima1 的变化;2. dashima3 的值;3. n 的作用 cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; cout << "dashima3="; for(int i=0; i < 7; ++i) { cout << dashima3[i]; } cout << endl; return 0; }
输出结果:
dashima1=aaa dashima2=bbbb dashima1=aaabb dashima2=bbbb dashima3=aaabb
三、char *strcpy(char* dst, const char *src) #
函数功能:
- 将字符串 src 复制到字符串 dst 。 dst 的值被 src 覆盖了。
- 函数返回 字符串 dst 的指针。
详见下面例程:
#include < iostream > #include < cstring > using namespace std; int main() { char dashima1[] = "aaa"; char dashima2[] = "bbbb"; char* dashima3; cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; dashima3 = strcpy(dashima1, dashima2); // 【注意理解】1. 上面 dashima1 的变化;2. dashima3 的值 cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; cout << "dashima3="; for(int i=0; i < 4; ++i) { cout << dashima3[i]; } cout << endl; return 0; }
输出结果:
dashima1=aaa dashima2=bbbb dashima1=bbbb dashima2=bbbb dashima3=bbbb
四、char *strncpy(char* dst, const char *src, const int n) #
函数功能:
- 将字符串 src 中的n个字符复制到字符串 dst 中。 dst 的值被 src 覆盖了。
- 函数返回 字符串 dst 的指针。
详见下面例程:
#include < iostream > #include < cstring > using namespace std; int main() { char dashima1[] = "aaa"; char dashima2[] = "bbbb"; char* dashima3; cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; dashima3 = strncpy(dashima1, dashima2, 2); // 【注意】输出的 dashima1 为 "bba" cout << "dashima1=" << dashima1 << endl; cout << "dashima2=" << dashima2 << endl; cout << "dashima3="; for(int i=0; i < 2; ++i) { cout << dashima3[i]; } cout << endl; return 0; }
输出结果:
dashima1=aaa dashima2=bbbb dashima1=bba dashima2=bbbb dashima3=bba
五、读取不定长度的字符 #
请使用之前学习过的 getchar(),完成不定长度的字符输出。
请点击连接,访问大师码 OJ 查看习题。
请计时 10 分钟,请待完成后,往下查看示例程序。
/* 请编程完成后,查看示例程序。 */
示例程序:
#include < iostream > #include < cstring > using namespace std; int main() { char dashima[200] = ""; int si=0; char c = getchar(); while('\n' != c) { dashima[si] = c; c = getchar(); ++si; } cout << dashima; return 0; }