2026/4/9 3:18:14
网站建设
项目流程
郑州做品牌网站好的公司,设计制作建筑模型教案,灌云网站设计,营销型网站设计特点C 中 string 的常用函数用法总结#xff08;全面实用版#xff09;
C 中字符串使用 std::string#xff08;位于 string 头文件#xff09;#xff0c;它是标准库提供的强大、安全、易用的字符串类#xff0c;远优于 C 风格的 char 数组。
1. 头文件与命名空间…C 中 string 的常用函数用法总结全面实用版C 中字符串使用std::string位于string头文件它是标准库提供的强大、安全、易用的字符串类远优于 C 风格的 char 数组。1. 头文件与命名空间#includestring// 必须包含usingnamespacestd;// 常用或写 std::string2. 基本创建与初始化string s1;// 空字符串string s2hello;// C风格字符串初始化strings3(world);// 构造函数strings4(5,a);// aaaaastrings5(s2);// 拷贝构造strings6(s2,1,3);// 从s2第1位开始取3个字符 → ell3. 常用成员函数大全按功能分类函数用法示例说明返回值/效果长度与容量size() / length()s.length()返回字符串长度字符数size_tempty()s.empty()判断是否为空boolcapacity()s.capacity()当前分配的内存容量size_treserve(n)s.reserve(100)预分配空间避免频繁扩容void增删改 / append()s “abc”;s.append(“def”)追加字符串stringpush_back(ch)s.push_back(‘x’)追加单个字符voidinsert(pos, str)s.insert(2, “xyz”)在pos位置插入strstringerase(pos, len)s.erase(0, 3)从pos开始删除len个字符stringclear()s.clear()清空字符串voidpop_back()s.pop_back()删除最后一个字符C11void访问与修改[ ]s[0] ‘H’访问/修改字符不检查边界charat()s.at(0) ‘H’访问/修改字符越界抛异常charfront()char c s.front()第一个字符C11charback()char c s.back()最后一个字符C11char查找find(str, pos0)s.find(“abc”)从pos开始查找str返回首次出现位置size_t没找到返回 string::nposrfind(str, posnpos)s.rfind(“abc”)从pos向前找最后一次出现位置size_tfind_first_of(str)s.find_first_of(“aeiou”)找第一个元音位置size_tfind_last_of(str)s.find_last_of(“xyz”)找最后一个匹配字符位置size_tfind_first_not_of(str)找第一个不在str中的字符size_t子串substr(pos, len)string t s.substr(1, 3)从pos开始取len个字符string替换replace(pos, len, str)s.replace(0, 5, “Hi”)用str替换从pos开始的len个字符string比较compare(str)s.compare(t)字典序比较int0: st, 0相等, 0 st ! s t支持直接比较运算符bool转换c_str()const char* p s.c_str()获取C风格字符串以\0结尾const char*data()const char* p s.data()获取字符数组C17前不一定\0结尾const char*copy(char* buf, len, pos0)s.copy(buf, 5, 0)拷贝到buf不自动加\0size_t4. 与 C 风格字符串互转// string → char*string shello;constchar*cs.c_str();// 用于 printf、fopen 等需要 const char* 的函数// char* → stringcharch[]world;strings2(ch);// 直接构造string s3ch;// 赋值5. 输入输出与 cin/coutstring s;cins;// 读取单词遇到空格停止getline(cin,s);// 读取整行包含空格推荐coutsendl;6. 实用示例代码#includeiostream#includestringusingnamespacestd;intmain(){string s Hello World! ;// 常用操作组合ss.substr(2,5);// Hellos.append( C);// Hello Cs.insert(5,,);// Hello, Cs.replace(6,3,World);// Hello, World// 查找size_t poss.find(World);if(pos!string::npos){cout找到位置: posendl;// 输出 7}// 去除首尾空格C11前手动实现s.erase(0,s.find_first_not_of( \t));s.erase(s.find_last_not_of( \t)1);cout\s\endl;// Hello, Worldreturn0;}7. 注意事项与最佳实践size()和length()完全等价。string::npos是常量通常为 -1size_t 的最大值用于表示“未找到”。[]不检查边界越界未定义行为at()检查边界越界抛out_of_range异常。c_str()返回的指针在 string 被修改或销毁后失效。string 是可拷贝的但大字符串建议传 const string 避免拷贝。C11 后推荐使用front()、back()、pop_back()。掌握以上函数就能轻松处理 95% 的字符串操作需求如果有特定场景如分割字符串、转数字欢迎继续提问。