ACM算法训练笔记:C/C++库函数与字符串操作

需积分: 14 2 下载量 185 浏览量 更新于2024-09-08 收藏 27KB DOCX 举报
"这篇资源是关于ACM程序竞赛算法的个人笔记,主要使用C/C++语言,涵盖了库函数的应用和ACM竞赛中常用的算法。笔记内容包括字符串操作、字符串复制、字符串构造、字符串赋值以及字符串操作函数如`swap()`、增加字符、插入字符等。" 在ACM算法训练中,字符串操作是非常关键的一部分,因为许多问题涉及到文本处理和数据解析。这篇笔记首先介绍了如何创建和操作字符串。例如,`string str1 = "yesterdayoncemore"` 是创建一个字符串对象,而`string str3(str1, 6)`则是通过已有字符串创建新的子串,结果为"dayoncemore"。`str4(str1, 6, 3)`则截取从索引6开始的3个字符,得到"day"。 `string str5=ch_music`和`string str6(ch_music)`展示了从字符数组创建字符串的方法,而`str7(ch_music, 4)`截取了字符数组的一部分。`string str8(10, 'i')`创建了一个由10个'i'组成的字符串。`str9(ch_music+5, ch_music+9)`则截取了字符数组的一部分。 笔记还讨论了`assign()`函数的用法,例如`str3.assign(str2, 3, 6)`将字符串`str2`从第3个字符开始的6个字符赋值给`str3`,结果为"heart"。`str4.assign(str2, 3, string::npos)`从`str2`的第3个字符开始到末尾赋值给`str4`,即"heartgoon"。`str4.assign("gaint")`和`str4.assign(5, 'x')`分别用于重新赋值和填充特定数量的字符。 `swap()`函数的使用展示了字符串对象间内容的交换,例如`str2.swap(str1)`之后,`str1`和`str2`的内容互换。 接着,笔记提到了增加字符到字符串尾部的各种方法,如`+=`运算符、`append()`函数和`push_back()`函数。例如,`s.append(5, 'x')`会在`s`的末尾添加5个'x'字符,而`s.push_back('a')`仅能添加单个字符。 最后,`insert()`函数的介绍说明了如何在字符串中插入字符或子串,通常需要指定插入位置和要插入的内容。这些操作对于解决ACM竞赛中的问题,如字符串匹配、文本处理等都是至关重要的基础技能。