C++ 字符串和字符操作
1. 头文件
#inlcude <string>
2. std::string & char* 区别
- char* 是一个指针
- string是一个类,内部封装了char,是一个char管理容器
3. std::string & C-style 字符串区别
std::string
是C++标准库中的字符串类,提供了许多字符串操作的方法和功能,包括长度计算、拼接、查找、替换等。- C-style 字符串是一种以空字符 '\0' 结尾的字符数组(char array),通过指向该数组的指针进行访问和操作。
4. std::string构造函数
- copy ctor
//default (1) string(); //copy (2) string (const string& str); //substring (3) string (const string& str, size_t pos, size_t len = npos); //from c-string (4) string (const char* s); //from buffer (5) string (const char* s, size_t n); //fill (6) string (size_t n, char c); //range (7) template <class InputIterator> string (InputIterator first, InputIterator last); //initializer list (8) string (initializer_list<char> il); //move (9) string (string&& str) noexcept;
copy ctor Test
// string constructor #include <iostream> #include <string> int main () { std::string s0 ("Initial string"); // constructors used in the same order as described above: std::string s1; std::string s2 (s0); std::string s3 (s0, 8, 3); std::string s4 ("A character sequence"); std::string s5 ("Another character sequence", 12); std::string s6a (10, 'x'); std::string s6b (10, 42); // 42 is the ASCII code for '*' std::string s7 (s0.begin(), s0.begin()+7); std::cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3; std::cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6a: " << s6a; std::cout << "\ns6b: " << s6b << "\ns7: " << s7 << '\n'; return 0; }
- assignment ctor
//string (1) string& operator= (const string& str); //c-string (2) string& operator= (const char* s); //character (3) string& operator= (char c); //initializer list (4) string& operator= (initializer_list<char> il); //move (5) string& operator= (string&& str) noexcept;
assignment ctor Test
// string assigning #include <iostream> #include <string> int main () { std::string str1, str2, str3; str1 = "Test string: "; // c-string str2 = 'x'; // single character str3 = str1 + str2; // string std::cout << str3 << '\n'; return 0; }
5. string容量操作
Func Name | usage |
---|---|
size() | Return length of string |
length() | Return length of string |
max_size() | Return maximum size of string |
capacity() | Return size of allocated storage |
clear() | Clear string |
empty() | Test if string is empty |
6. string访问操作
Func Name | usage |
---|---|
operator[] | Get character of string |
at | Get character in string |
back | Access last character |
front | Access first character |
6. string常用方法
- size() 或 length(): 返回字符串的长度。
- empty(): 检查字符串是否为空。
- clear(): 清空字符串内容。
- c_str(): 返回一个指向以空字符结尾的字符数组的指针。
- substr(start, length): 返回从指定位置开始的指定长度的子字符串。
- find(substring): 查找子字符串在主字符串中第一次出现的位置。
- replace(start, length, new_string): 用新字符串替换指定位置的子字符串。
- append(string): 在字符串末尾添加新的字符串。
- insert(pos, string): 在指定位置插入新的字符串。
- erase(start, length): 从指定位置开始删除指定长度的字符。
7. C-style字符串常用函数
- strlen(str): 返回字符串的长度。
- strcpy(dest, src): 将一个字符串复制到另一个字符串。
- strcat(dest, src): 将一个字符串追加到另一个字符串的末尾。
- strcmp(str1, str2): 比较两个字符串。
- strchr(str, ch): 在字符串中查找指定字符的第一个匹配项。
- strstr(str, substr): 在字符串中查找子字符串的第一个匹配项。
- strtok(str, delim): 分割字符串为一系列标记,常用于分割单词或子字符串。
8. char*常用函数
- void *memset(void *s,int ch,size_t n);
用法:将s中当前位置后面n个字节用ch替换,并返回s;
- void *memcpy(void *dest ,const void *src,size_t n);
从源src所指的内存地址的起始地址拷贝n个数值到目的dest所指的内存地址的起始地址;
- int memcmp(const void *buf1,const void *buf2,unsigned int count);
用法:比较buf1和buf2前count个字节AIIC码值得大小;
如果buf1<buf2,输出为-1;
如果buf1>buf2,输出为1;
如果buf1=buf2,输出为零;
本文作者:江海余生
本文链接:https://www.cnblogs.com/springcoming/p/18068562
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步