C++标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。标准库string类型的目的就是满足对字符串的一般应用。
本文地址:http://www.cnblogs.com/archimedes/p/cpp-string.html,转载请注明源地址。
引入头文件#include<string>
1、string对象的定义和初始化
string标准库支持几个构造函数,构造函数是一个特殊成员函数
一下是几种初试化string对象的方式
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的副本
string s3("value"); //将s3初始化为一个字符串字面值副本
string s4(n,'c'); //将s4初始化字符'c'的n个副本
构造string对象的其他方法:

举例如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char *cp="Hiya";
char carray[]="World!!!!";
char nonull[]={'H','i'};
string s1(cp); //s1=="Hiya"
string s2(carray,); //s2=="World"
string s3(carray+,); //s3=="!!!!"
string s4(nonull); //error
string s5(carray,); //s5=="Hi"
cout<<s1<<endl;
cout<<s2<<endl;
cout<<s3<<endl;
cout<<s4<<endl;
cout<<s5<<endl;
cin.get();
return ;
}
注:s4的定义是错误的,调用这种形式的初始化,其参数必须是以空字符结束的数组,将不包含null的数组传递给此构造函数将导致编译器无法检测的严重错误
2、string对象的读写
使用标准输入输出操作符来读写string对象:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<s<<endl;
return ;
}
string类型的输入输出操作符:
- 读取并忽略开头所有的空白字符(如空格、换行符、制表符等)
- 读取字符直至再次遇到空白字符,读取终止
我们可以把多个读操作或多个写操作放在一起:
string s1,s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;
(1)读入未知数目的的string对象
string的输入输出操作符也会返回所读的数据流,可以把输入操作作为判断条件:
int main()
{
string word;
while(cin>>word)
cout<<word<<endl;
return ;
}
(2)、使用getline读取整行文本
string IO操作:getline,这个函数接受两个参数:一个输入流对象和一个string对象。getline函数从输入流的下一行读取,并保存读取内容到string中,但不包括换行符。getline并不忽略换行符,遇到换行符,即便它是输入的第一个字符,getline也将停止读入并返回,这时string参数将被置为空string
int main()
{
string line;
while(getline(cin,line))
cout<<line<<endl;
return ;
}
3、string对象的操作

(1)string的size和empty操作
了解string对象是否为空是有用的:
string st("test");
if(st.size()==)
//or
if(st.empty())
(2)string::size_type类型
size()成员函数返回的是string::size_type类型的值,一种unsigned型,事实表明size_type存储的string长度是int所能存储的两倍
4、string对象的赋值
可以把一个string对象赋值给另一个string对象:
string s1,s2="test";
s1=s2;
先将s1占用的相关内存释放,分配给s1足够存放s2副本的内存空间,最后把s2中所有字符复制到新分配的内存空间
5、两个string对象相加
两个或多个string对象可以通过使用+或者+=连接起来
string s1("hello, ");
string s2("word\n");
string s3=s1+s2;
//or
s1+=s2;
6、和字符串字面值的连接
string s1("hello");
string s2("world");
string s3=s1+", "+s2+"\n";
7、从string对象获取字符
string类型通过下标操作符([])来访问string对象中的单个字符
8、string对象的容器特征
string类型还支持大多数顺序容器的操作,在某些方面,可将string类型视为字符容器。除了一些特殊操作,string类型提供与vector容器相同的操作
不同的是:它不支持以栈的方式操纵容器:在string类型中不能使用front、back和pop_back操作
string类型提供的操作意味着可将操纵vector对象的程序改为操纵string对象:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s("Hello!");
string::iterator iter=s.begin();
while(iter!=s.end())
cout<<*iter++<<endl;
cin.get();
return ;
}
与容器共有的string操作

string类型特有的版本

9、只适用于string类型的操作
string类型提供了容器类型不支持的其他几种操作:
1、substr操作
s.substr(pos,n) //返回一个string类型的字符串,它包含s中从下标pos开始的n个字符
s.substr(pos) //返回一个string类型的字符串,它包含从下标pos开始到s末尾的所有字符
s.substr() //返回s的副本
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s("hello world");
string s2=s.substr(,);
string s3=s.substr();
cout<<s2<<endl;
cout<<s3<<endl;
cin.get();
return ;
}
2、append和replace函数
对于append操作,字符将添加在string对象的末尾,而replace函数则将这些字符插入到指定位置,从而替换string对象中一段已存在的字符
修改string对象的操作:

append和replace操作的参数:args

C++标准库string类型的更多相关文章
- 【C++ Primer每日刷】之三 标准库 string 类型
标准库 string 类型 string 类型支持长度可变的字符串.C++ 标准库将负责管理与存储字符相关的内存,以及提供各种实用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与 ...
- 把《c++ primer》读薄(3-1 标准库string类型初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...
- C++标准库string类型的使用和操作总结
string是C++标准库最重要的类型之一,string支持长度可变的字符串,其包含在string头文件中.本文摘自<C++PRIMER 第四版·特别版>和个人的一些总结. 一.声明和初始 ...
- 标准库string类型简述
若想使用标准库的string类需要使用如下声明: #include <string> Using std::string: Using std::wstring: 那么就可以使用这两个类了 ...
- 标准库string类型
一.string 对象的定义和初始化的方式 1. string s1: 2. string s2(s1): 3. string s3("hello"); 4. string s4( ...
- C++标准库vector类型的使用和操作总结
vector是一种类型对象的集合,它是一种顺序容器,容器中的所有对象必须都是同一种类型.想了解顺序容器的更多内容:C++顺序容器知识总结.vector的对象是可以动态生长的,这说明它在初始化时可以不用 ...
- 把《c++ primer》读薄(3-3 标准库bitset类型)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...
- C++标准库<string>简单总结
C++标准库<string>简单总结 在C++中,如果需要对字符串进行处理,那么它自带的标准库<string>无疑是最好的选择,它实现了很多常用的字符处理函数. 要想使用标准C ...
- C 标准库 - string.h
C 标准库 - string.h This header file defines several functions to manipulate C strings and arrays. stri ...
随机推荐
- FLEX自定义事件
有时候我们需要让两个组件之间实现联动,并且在其中传递数据,自定义事件机制可以帮助我们比较优雅的实现这种需要. 下面的例子,是打算实现一个列表和一个编辑框的联动. 编辑框代码 <?xml vers ...
- PLSQL快捷补充代码设置
菜单Tools-->Preferences...然后依次选择下图红色选项 弹出下图对话框 输入需要快速生成的语句点击保存 点击Save后在slq窗口中输入 设置的语句缩写 列入:第一个sf 然 ...
- ROC和AUC介绍以及如何计算AUC ---好!!!!
from:https://www.douban.com/note/284051363/?type=like 原帖发表在我的博客:http://alexkong.net/2013/06/introduc ...
- 谈PHP中信息加密技术
同样是一道面试答错的问题,面试官问我非对称加密算法中有哪些经典的算法? 当时我愣了一下,因为我把非对称加密与单项散列加密的概念弄混淆了,所以更不用说什么非对称加密算法中有什么经典算法,结果当然也让面试 ...
- ASP.NET Web API 的简单示例
Demo1: HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- 使用Html5+C#+微信 开发移动端游戏详细教程 :(五)游戏图像的加载与操作
当我们进入游戏时,是不可能看到所有的图像的,很多图像都是随着游戏功能的打开而出现, 比如只有我打开了"宝石"菜单才会显示宝石的图像,如果是需要显示的时候才加载, 会对用户体验大打折 ...
- SQL Server中的事务日志管理(2/9):事务日志架构概述
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- Java魔法堂:自定义和解析注解
一.前言 注解(Annotation)作为元数据的载体,为程序代码本身提供额外的信息,使用过MyBatis等ORM框架的朋友对 @Insert 的注解应该不陌生了,这是MyBatis自定义的注解,显然 ...
- KeyValue Config
public class ConfigHelper { public static ScriptsHelper Scripts { get { return new ScriptsHelper(); ...
- 暴力 + 贪心 --- Codeforces 558C : Amr and Chemistry
C. Amr and Chemistry Problem's Link: http://codeforces.com/problemset/problem/558/C Mean: 给出n个数,让你通过 ...