标准库中的字符串类

  C++语言直接支持C语言所有概念。

  C++中没有原生的字符串类型。

由于C++中没有原生的字符串类型,C++标准库提供了string类型。

  1、string 直接支持字符串链接

  2、字符串大小比较

    /*实验 字符串排序 拼接*/    

#include <iostream>
#include <string>
#include <sstream> using namespace std;
/*实验1 字符串排序 拼接*/
string string_add(string s[],int addnumber)
{
string ret="";
for(int i= ; i<addnumber ;i++)
{
ret += s[i]+';';//字符串拼接
}
return ret;
} //首字母排序 swap();C++交换函数
//按照首字母排序
void string_sord(string s[],int len)
{
for(int i = ;i<len ; i++)
{
for(int j=i ;j<len;j++)
if(s[i] > s[j])
swap(s[i],s[j]);//使用 swap()交换两个字符串
}
} int main()
{
string sTest[] =
{
"abc",
"cba",
"bwe"
};
cout<<string_add(sTest,)<<endl;
cout<<endl;
string_sord(sTest,);
for(int i = ; i< ;i++)
cout<< sTest[i]<<endl;
return ;
}

输出结果:  

abc;cba;bwe;

abc
bwe
cba

  使用C++标准库中的string 进行字符串的拼接 排序。

  3、子串查找和提取

  4、字符串的插入和替换

字符串与数字的转换:

  1、标准库中提供了相关类对字符串和数字进行转换。

  2、字符串sstream 用于string 的转换

    2.1、<sstream> 头文件

    2.2、istringstream  字符串输入流

    2.3、ostringstream 字符串输出流

 字符串转数字、数字转字符串。

  istringstream与ostringstream 字符串流使用

#include <iostream>
#include <string>
#include <sstream> using namespace std;
//string to float
void stringToNumber(const string s,float& n)
{ istringstream oss(s);//创建istringstream流 将字符传入istringstream流中
oss>>n;//将字符s 转换为数字n //istringstream(s)>>n;//使用istringstream 字符串输入流 } //数字 转 字符
void numberToString(const float& f, string& s)
{ ostringstream oss;//创建 ostringstream 流
oss << f;//将数字传入流
s=oss.str();//使用流中的.str()函数获取字符串
//s= ((ostringstream&)(ostringstream()<<f)).str();
} //由于实现的是float之间的相互转换。要实现int 还需要写,下面通过宏定义的方式进行修改,后期使用模块函数修改。
//使用临时变量 ,由于临时变量只有一条语句的声明周期。
//修改如下
#define toNumber(s,n) (istringstream(s)>>n)
#define toString(n) (((ostringstream&)(ostringstream()<<n)).str())
int main()
{
float temp_val;
stringToNumber("1.12",temp_val);
cout << temp_val <<endl;
string sTest = "";
numberToString(1.22,sTest);
cout <<sTest <<endl; double val=;
if(toNumber("",val))
cout << val << endl;
cout << toString(13.25) <<endl; return ;
}

运行结果:  

1.12
1.22 13.25

字符串左右移动:(实现字符串的 <<  >>操作) 实现字符串的循环左右移动。  

#include <iostream>
#include <string>
#include <sstream> using namespace std; //使用字符串 string_nam.substr();//字符串剪切函数
//string_nam.length(); 获取当前字符串长度
void testFun()
{
string s = "abcdef";
string sOut ="";
sOut = s.substr();
sOut += s.substr(,);
cout <<sOut <<endl;
cout << s.length() <<endl;
} void testFun1( string &s,int n)
{
string temp ="";
unsigned int mark = ;
n = n %s.length();//防止n 超过字符串的长度。移动长度与字符串长度相等相当于不移动
mark = s.length()-n;//获取字符串长度 temp = s.substr(mark);//从 第mark个数字截取后续的字符 temp += s.substr(,mark);//截取从0到mark的字符 ,完成字符移动 s = temp; } string operator >> (const string &s ,int n )
{
string temp ="";
unsigned int mark = ;
n = n %s.length();//防止n 超过字符串的长度。移动长度与字符串长度相等相当于不移动
mark = s.length()-n;//获取字符串长度 temp = s.substr(mark);//从 第mark个数字截取后续的字符 temp += s.substr(,mark);//截取从0到mark的字符 ,完成字符移动 return temp;
} string operator << (const string &s ,int n )
{
string temp ="";
unsigned int mark = ;
n = n %s.length();//防止n 超过字符串的长度。移动长度与字符串长度相等相当于不移动
mark = s.length()-n;//获取字符串长度 temp = s.substr(s.length()-mark);//从 第mark个数字截取后续的字符
temp += s.substr(,s.length()-mark);//截取从0到mark的字符 ,完成字符移动 return temp;
} int main()
{
string sTest ="abcdefghij";
cout << sTest <<endl;
string sTest2 =sTest>>;
cout << sTest2 <<endl;
sTest2 = sTest<<;
cout << sTest2 <<endl;
return ;
}

运行:

  

abcdefghij
hijabcdefg
bcdefghija

C++ 标准库字符串类使用的更多相关文章

  1. 实现C++标准库string类的简单版本

    代码如下: #ifndef STRING_H #define STRING_H #include <cassert> #include <utility> #include & ...

  2. C++标准库异常类

    C++标准库异常类 2012-12-24 16:27 5269人阅读 评论(1) 收藏 举报  分类: c/c++(36)  C++标准库异常类继承层次中的根类为exception,其定义在excep ...

  3. C++异常第二篇---C++标准库异常类exception的使用

    1 继承图示 2 具体讲解 C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下: na ...

  4. [技术] OIer的C++标准库 : 字符串库<string>

    引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 众所周知, OI中经常用到字符串相关的处理, 这时善用字符串库可以使一些操作更加简洁易 ...

  5. [技术] OIer的C++标准库 : 字符串库

    引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 点击传送至我的上一篇系列博文 众所周知, OI中经常用到字符串相关的处理, 这时善用字 ...

  6. 标准库String类

    下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...

  7. php标准库DirectoryIterator类的操作说明

    <?php $dir = new DirectoryIterator(dirname(__FILE__)); foreach ($dir as $fileInfo) { if ($fileInf ...

  8. 把《c++ primer》读薄(3-3 标准库bitset类型)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...

  9. C++ 标准库概览(一分钟就看完了)

    C++ 标准库以若干头文件的方式提供. 下面简单介绍一个各头文件的内容. 第一部分 容器 Containers <array> C++11 新增.提供了容器类模板 std::array,固 ...

随机推荐

  1. IDEA找回Run Dashboard

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  2. Nginx-rtmp之监听端口的管理

    1. 概述 监听端口属于 server 虚拟主机,它是由 server{} 块下的 listen 配置项决定的. 每监听一个 TCP 端口,都将使用一个独立的 ngx_rtmp_conf_port_t ...

  3. js第一次学习心得

    最近开始接触js,用的是阮一峰的菜鸟教程,相对来说我觉得是比较通俗易懂的,用了很多很小的例子去讲每一个很小的细节,但对于我这种因为即将到来的团队作业做准备的,也没有办法将每个细节都理解的清楚,主要的把 ...

  4. git合并同事代码

    git 操作: 如果龙哥提交了代码,我想拉去过来,我需要的操作: 1.git fetch 2. git add . 3.git commit -m '' 提交本地的文件 4.git merge ori ...

  5. hive 源码笔记(1):命令行执行的主流程。

    1. 'hive'命令是(默认为hive跟目录)./bin下的一个shell脚本,依次加载 ./bin/hive-config.sh, ./conf/hive-env.sh, 设置与hadoop.sp ...

  6. Java-AESUtil

    在线版 http://tool.chacuo.net/cryptaes 要使用 AES/CBC/PKCS7Padding 模式需要添加依赖 <!--AES/CBC/PKCS7Padding--& ...

  7. leetcode-hard-array-238. Product of Array Except Self-NO

    mycode   99.47% class Solution(object): def productExceptSelf(self, nums): """ :type ...

  8. JNI的开发步骤

    使用C函数实现Java本地方法: 1. 在java代码里面声明一个native的方法 public native String helloFromC(); 2. 在工程目录下面创建一个jni的文件夹 ...

  9. JavaScript中的bind,call和apply函数的用法和区别

    一直没怎么使用过JavaScript中的bind,call和apply, 今天看到一篇比较好的文章,觉得讲的比较透彻,所以记录和总结如下 首先要理解的第一个概念,JavaScript中函数调用的方式, ...

  10. Sqlserver实现故障转移 — AlwaysOn实现故障转移(4)

    目的:在已经加域的计算机上安装sqlserver2012,并配置系统级故障转移及数据库,实现AlwayOn. 域控的建立详见:https://www.cnblogs.com/xiaoerlang90/ ...