博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++【string】用法和例子
阅读量:5262 次
发布时间:2019-06-14

本文共 4496 字,大约阅读时间需要 14 分钟。

1 /***  2  * string 基础api复习  3  * 8 AUG 2018  4  */  5   6 #include 
7 #include
8 using namespace std; 9 10 void print(string str, int index) 11 { 12 std::cout << "str" << index << " = " << str << std::endl; 13 } 14 15 int main() 16 { 17 // string对象初始化 18 string str0("i am a boy~"); 19 string str1 = "hello world!"; 20 string str2(str1); 21 string str3(5, 'c'); 22 string str4(str1, 2, 3); // 从【2】索引起始,长度为3的字符串 23 24 print(str0, 0); 25 print(str1, 1); 26 print(str2, 2); 27 print(str3, 3); 28 print(str4, 4); 29 30 // string相关简单函数 31 bool power; 32 int str_len; 33 char te_ch; 34 string te_str; 35 power = str0.empty(); // 判断字符串是否为空 36 std::cout << "power = " << power << std::endl; 37 str_len = str1.size(); // 字符串长度 38 std::cout << "str_len = " << str_len << std::endl; 39 te_ch = str2[4]; // 返回字符串的第n个字符,下标从0开始 40 std::cout << "str2[4] = " << te_ch << std::endl; 41 te_ch = str2.at(4); // 返回字符串的第n个字符,下标从0开始,同上 42 std::cout << "str2.at(4) = " << te_ch << std::endl; 43 te_str = str1 + str0; // 连接两个字符串变成一个新的字符串 44 std::cout << "str1 + str0 = " << te_str << std::endl; 45 te_str = str3; // 替换字符串 46 std::cout << "te_str = " << te_str << std::endl; 47 te_str.append(str0); // 追加字符串 48 std::cout << "te_str = " << te_str << std::endl; 49 te_str.assign(str0); // 为字符串对象赋值 50 std::cout << "te_str = " << te_str << std::endl; 51 52 // str.begin()&&str.end()均为迭代器 53 string::iterator it = str0.begin(); // 字符串迭代器,类似指针 54 std::cout << "it = " << (*it) << std::endl; 55 56 // string::c_str() 57 char* char_str = new char[strlen(str0.c_str()) + 1]; 58 strcpy(char_str, str0.c_str()); // 当需要将字符串转成const char*时,用c_str(意味着转换成C语音的方式) 59 std::cout << "char_str = " << char_str << std::endl; 60 delete []char_str; 61 char_str = NULL; 62 63 // string::erase(),注意,erase后迭代器自动指向后一个位置 64 str0.erase(5, 2); // 从index值为5.删除长度为4个字符 65 std::cout << "str0.erase(5, 2) = " << str0 << std::endl; 66 str0.erase(str0.begin() + 2); // 删除index值为2的字符 67 std::cout << "str0.erase(str0.begin() + 2) = " << str0 << std::endl; 68 str0.erase(str0.begin() + 2, str0.end() - 1); // 从index值为2,删除到index末尾减一 69 std::cout << "str0.erase(str0.begin() + 2) = " << str0 << std::endl; 70 71 // string::find() 72 std::size_t found = str1.find(str4, 0); // 从str1中找str4第一次出现的地方 73 if (found != string::npos) 74 std::cout << "first found is " << found << std::endl; 75 found = str1.find('o'); // 从str1中找o第一次出现的地方 76 if (found != string::npos) 77 std::cout << "first found is " << found << std::endl; 78 found = str1.find("world"); // 从str1中找world第一次出现的地方 79 if (found != string::npos) 80 std::cout << "first found is " << found << std::endl; 81 82 // string::insert() 83 str0.insert(1, " love"); // 在str0的index值为1后插入 love 84 print(str0, 0); 85 str0.insert(6, " you", 0, 3); // 在str0的index值为6后插入 you中从index值为0到长度为3的字符串 86 print(str0, 0); 87 str0.insert(0, str1); // 在str0的index值为0后插入str1 88 print(str0, 0); 89 90 // string::length()与string::size()用法相同,值也一样 91 std::cout << "str0.length() = " << str0.length() << " str0.size() = " << str0.size() << std::endl; 92 93 // string::maxsize()返回能够存储字符串的最大长度 94 std::cout << "str0.max_size() = " << str0.max_size() << std::endl; 95 96 // string::rbegin()和string::rend()逆向迭代器 97 for (string::reverse_iterator it = str0.rbegin(); it != str0.rend(); it++) 98 { 99 std::cout << (*it);100 }101 std::cout << std::endl;102 print(str0, 0);103 104 // 这个是algorithm里面的,混入是为了对比效果105 reverse(str0.begin(), str0.end()); 106 print(str0, 0);107 108 // string::replace()用法类似string::insert()109 str0.replace(5, 3, "ni hao", 2, 4);110 print(str0, 0);111 112 // string::substr()113 te_str = str0.substr(5, 3);114 std::cout << "te_str = " << te_str << std::endl;115 116 // string::swap()117 te_str.swap(str0);118 print(str0, 0);119 std::cout << "te_str = " << te_str << std::endl;120 121 while (true)122 {123 getchar();124 }125 return 0;126 }

 

转载于:https://www.cnblogs.com/tangcumalaxia/p/9441420.html

你可能感兴趣的文章
Android开发在路上:少去踩坑,多走捷径
查看>>
phpcms修改子栏目的父级
查看>>
【以前的空间】bzoj 1052 [HAOI2007]覆盖问题
查看>>
Arduino系列之DHT11模块采集数据(一)
查看>>
servlet篇 之 servlet概念及其功能实现
查看>>
20162319莫礼钟 实验二 树
查看>>
实战 SQL Server 2008 数据库误删除数据的恢复
查看>>
css3 2D转换
查看>>
表格的右端加箭头
查看>>
最全,可直接用的一些正则校验,判断邮箱,手机号码,车牌号,身份证号,网址,账号,密码,ip,去掉html格式,工商税号等。...
查看>>
IOS引导页拨动4张图片最后一张停三秒进入主页,页面推送
查看>>
定义一个像素高度的容器:
查看>>
DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置
查看>>
C#视频播放
查看>>
Python:安装mssql模块功能,并实现与sqlserver连接、查询
查看>>
java static代码段 2
查看>>
游戏程序开发的工作主要包括哪些方面
查看>>
Codeforces Round #302 解题报告
查看>>
cocos2d-x游戏实例(14)-纵版射击游戏(1)
查看>>
Android游戏开发之旅 View类详解
查看>>