/***
* string 基础api复习
* 8 AUG 2018
*/ #include <iostream>
#include <string>
using namespace std; void print(string str, int index)
{
std::cout << "str" << index << " = " << str << std::endl;
} int main()
{
// string对象初始化
string str0("i am a boy~");
string str1 = "hello world!";
string str2(str1);
string str3(, 'c');
string str4(str1, , ); // 从【2】索引起始,长度为3的字符串 print(str0, );
print(str1, );
print(str2, );
print(str3, );
print(str4, ); // string相关简单函数
bool power;
int str_len;
char te_ch;
string te_str;
power = str0.empty(); // 判断字符串是否为空
std::cout << "power = " << power << std::endl;
str_len = str1.size(); // 字符串长度
std::cout << "str_len = " << str_len << std::endl;
te_ch = str2[]; // 返回字符串的第n个字符,下标从0开始
std::cout << "str2[4] = " << te_ch << std::endl;
te_ch = str2.at(); // 返回字符串的第n个字符,下标从0开始,同上
std::cout << "str2.at(4) = " << te_ch << std::endl;
te_str = str1 + str0; // 连接两个字符串变成一个新的字符串
std::cout << "str1 + str0 = " << te_str << std::endl;
te_str = str3; // 替换字符串
std::cout << "te_str = " << te_str << std::endl;
te_str.append(str0); // 追加字符串
std::cout << "te_str = " << te_str << std::endl;
te_str.assign(str0); // 为字符串对象赋值
std::cout << "te_str = " << te_str << std::endl; // str.begin()&&str.end()均为迭代器
string::iterator it = str0.begin(); // 字符串迭代器,类似指针
std::cout << "it = " << (*it) << std::endl; // string::c_str()
char* char_str = new char[strlen(str0.c_str()) + ];
strcpy(char_str, str0.c_str()); // 当需要将字符串转成const char*时,用c_str(意味着转换成C语音的方式)
std::cout << "char_str = " << char_str << std::endl;
delete []char_str;
char_str = NULL; // string::erase(),注意,erase后迭代器自动指向后一个位置
str0.erase(, ); // 从index值为5.删除长度为4个字符
std::cout << "str0.erase(5, 2) = " << str0 << std::endl;
str0.erase(str0.begin() + ); // 删除index值为2的字符
std::cout << "str0.erase(str0.begin() + 2) = " << str0 << std::endl;
str0.erase(str0.begin() + , str0.end() - ); // 从index值为2,删除到index末尾减一
std::cout << "str0.erase(str0.begin() + 2) = " << str0 << std::endl; // string::find()
std::size_t found = str1.find(str4, ); // 从str1中找str4第一次出现的地方
if (found != string::npos)
std::cout << "first found is " << found << std::endl;
found = str1.find('o'); // 从str1中找o第一次出现的地方
if (found != string::npos)
std::cout << "first found is " << found << std::endl;
found = str1.find("world"); // 从str1中找world第一次出现的地方
if (found != string::npos)
std::cout << "first found is " << found << std::endl; // string::insert()
str0.insert(, " love"); // 在str0的index值为1后插入 love
print(str0, );
str0.insert(, " you", , ); // 在str0的index值为6后插入 you中从index值为0到长度为3的字符串
print(str0, );
str0.insert(, str1); // 在str0的index值为0后插入str1
print(str0, ); // string::length()与string::size()用法相同,值也一样
std::cout << "str0.length() = " << str0.length() << " str0.size() = " << str0.size() << std::endl; // string::maxsize()返回能够存储字符串的最大长度
std::cout << "str0.max_size() = " << str0.max_size() << std::endl; // string::rbegin()和string::rend()逆向迭代器
for (string::reverse_iterator it = str0.rbegin(); it != str0.rend(); it++)
{
std::cout << (*it);
}
std::cout << std::endl;
print(str0, ); // 这个是algorithm里面的,混入是为了对比效果
reverse(str0.begin(), str0.end());
print(str0, ); // string::replace()用法类似string::insert()
str0.replace(, , "ni hao", , );
print(str0, ); // string::substr()
te_str = str0.substr(, );
std::cout << "te_str = " << te_str << std::endl; // string::swap()
te_str.swap(str0);
print(str0, );
std::cout << "te_str = " << te_str << std::endl; while (true)
{
getchar();
}
return ;
}

C++【string】用法和例子的更多相关文章

  1. 我教女朋友学编程html系列(5) html中table的用法和例子

    女朋友不是学计算机的,但是现在从事计算机行业,做技术支持,她想学习编程,因此我打算每天教她一点点,日积月累,带她学习编程,如果其他初学者感兴趣,可以跟着学. 为了将table介绍的简单.生动,具有实战 ...

  2. C++ string的用法和例子

    使用场合: string是C++标准库的一个重要的部分,主要用于字符串处理.可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作.同时C++的算法库对string也有着很好的支持,而且st ...

  3. [UE4]C++ string的用法和例子

    使用场合: string是C++标准库的一个重要的部分,主要用于字符串处理.可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作.同时C++的算法库对string也有着很好的支持,而且st ...

  4. CodeSmith 基础用法和例子

    〇.            前言 一.            工具设置 CodeSmith默认是不支持中文的,那么我们必须要先设置使其支持中文显示,保存.并且要能够在生成文件中支持中文. [Tools ...

  5. 用于模式匹配的String方法和RegExp方法

    上一节总结了创建正则表达式的语法,这一篇笔者总结了用于模式匹配的String四个方法:search().replace().match().split()以及用于模式匹配的RegExp两个方法exec ...

  6. sqlMetal用法和例子 自定义DBML

    SqlMetal是跟随VS发布的一个自动工具,可以用来生成数据库的Linq代码. 这是中文版的帮助文件. SqlMetal [选项] [<输入文件>] 为 .NET Framework 的 ...

  7. Android List<Map<String,String>转json(例子)

    package com.armslee.json.test.cases; import java.util.ArrayList; import java.util.HashMap; import ja ...

  8. String.Format 格式化例子

    //格式为sring输出//   Label1.Text = string.Format("asdfadsf{0}adsfasdf",a);替换符//   Label2.Text  ...

  9. Scala 孤立对象和单例对象方法体的用法和例子

    [学习笔记] 1  以object关键字修饰一个类名,这种语法叫做孤立对象,这个对象是单例的. 相当于将单例类和单例对象同时定义.相当于java中的单例,即在内存中只会存在一个Test3实例.创建一个 ...

随机推荐

  1. C++ 系列:iostream 的用途与局限

    转载自http://www.cnblogs.com/Solstice/archive/2011/07/17/2108715.html 本文主要考虑 x86 Linux 平台,不考虑跨平台的可移植性,也 ...

  2. SQL Server Management Studio 的账号密码

    使用“Windows身份验证”方式无法登陆 使用“SQL Server身份验证” 方式无法登陆 解决办法:关闭当前所有服务.通过[Microsoft SQL Server 2008]|[配置工具]|[ ...

  3. 数论+线性dp——cf1174A

    直接推公式没有推出来 看了题解才会做.. 首先能够确定前面几个数的gcd一定是2^j * 3^k, 其中k<=1 那么可以用dp[i][j][k]来表示到第i位的gcd是2^j*3^k f(j, ...

  4. hadoop快照管理

    快照相当于对目录做备份,并不会复制所有文件,而是记录文件的变化命令用法 ()hdfs dfsadmin -allowSnapshot 路径 (开启指定目录的快照功能) ()hdfs dfsadmin ...

  5. 在MsSql中,创建链接服务器

    建立链接服务器,主要为了跨服务器数据库操作 创建链接服务器 --创建远程链接服务器 EXEC sys.sp_addlinkedserver @server = 'SyncServer', -- 目标服 ...

  6. 云-腾讯云-云直播:云直播(LVB)

    ylbtech-云-腾讯云-云直播:云直播(LVB) 云直播(Live Video Broadcasting,LVB)依托腾讯多年的音视频技术平台,以及全球海量加速节点和领先的音视频 AI 技术,为开 ...

  7. 用原生js封装轮播图

    原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...

  8. css3@media实现原理

    window.matchMedia() 基本用法 window.matchMedia方法用来检查CSS的mediaQuery语句.各种浏览器的最新版本(包括IE 10+)都支持该方法,对于不支持该方法 ...

  9. 干货:排名前 16 的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  10. ReadyAPI创建功能测试的多种方法

    原文:ReadyAPI创建功能测试的多种方法 声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 在ReadyAPI中有多种方法可以创建功能 ...