C++标准库string
C++标准库string
定义和初始化
| string s1 | 默认初始化,s1是一个空串 |
|---|---|
| string s2(s1) | s2是s1的副本 |
| string s2 = s1 | 等价于s2(s1),s2是s1的副本 |
| string s3("value") | s3是字面值"value"的副本,除了字面值最后的那个空字符外 |
| string s3 = "value" | 等价于s3("value"),s3是字面值"value"的副本 |
| string s4(n, 'c') | 把s4初始化为由连续n个字符c组成的串 |
直接初始化和拷贝初始化
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1; // 默认初始化,空字符串
string s2("haha"); // 直接初始化
string s3 = "haha"; // 拷贝初始化
string s4(10, 'a'); // 直接初始化
cout << s1 << endl
<< s2 << endl
<< s3 << endl
<< s4 << endl;
system("pause");
return 0;
}
程序输出结果
haha
haha
aaaaaaaaaa
请按任意键继续. . .
string对象上的操作

读写string对象
- 写入一个字符串。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
cout << s << endl;
system("pause");
return 0;
}
程序输出结果
hello world
hello
请按任意键继续. . .
- 写入两个字符串。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1, s2;
cin >> s1 >> s2;
cout << s1 << s2 << endl;
system("pause");
return 0;
}
程序输出结果
hello world
helloworld
请按任意键继续. . .
- 读取未知数量的string对象
#include<iostream>
#include<string>
using namespace std;
int main()
{
string word;
while (cin >> word)
cout << word << endl;
system("pause");
return 0;
}
程序输出结果
hi
hi
visual
visual
studio
studio
^Z
请按任意键继续. . .
使用ctrl + Z结束输入。
使用getline读取一整行
保留字符串中的空白符,从给定的输入流中读入内容,直到遇到换行符位置,然后把所读的内容存入到string对象中。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
cout << line;
system("pause");
return 0;
}
程序输出结果
hello hi !!!
hello hi !!!
wooohhh woc
wooohhh woc
^Z
请按任意键继续. . .
- 只输出非空的行
#include<iostream>
#include<string>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
// 只输出非空的行
if(!line.empty())
cout << line;
system("pause");
return 0;
}
- 只输出超过10个字符的行
#include<iostream>
#include<string>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
// 只输出超过10个字符的行
if (line.size()>10)
cout << line;
system("pause");
return 0;
}
程序输出结果
hello
hello world
hello world
^Z
请按任意键继续. . .
string对象相加
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1 = "hello";
string s2 = " world\n";
//string s3 = "hello" + " world\n"; //错误
string s3 = s1 + s2;
string s4 = s1 + " haha\n"; //正确,字面值可以和string对象相加
cout << s3 << endl;
cout << s4 << endl;
system("pause");
return 0;
}
程序运行结果
hello world
hello haha
请按任意键继续. . .
处理string对象中的字符
cctype头文| isalnum(c) | 如果c是字母或数字,则返回True |
|--------------|------------------------------------------------------|
| isalpha(c) | 如果c是字母,则返回true |
| iscntrl(c) | 如果c是控制字符,则返回true |
| isdigit(c) | 如果c是数字,则返回true |
| isgraph(c) | 如果c不是空格,但可打印,则为true |
| islower(c) | 如果c是小写字母,则为true |
| isprint(c) | 如果c是可打印字符,则为true |
| ispunct(c) | 如果c是标点符号,则为true |
| isspace(c) | 如果c是空白是否,则为true |
| isupper(c) | 如果c是大写字母,则为true |
| isxdigit(c) | 如果c是十六进制的数,则为true |
| tolower(c) | 如果c是大写字母,返回其小写字母的形式,否则直接返回c |
| toupper(c) | 如果c是小写字母,返回其大写字母的形式,否则直接返回c |
件中的函数把string对象中的字符每行打印出来
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1 = "some string";
cout << "method a" << endl;
for (auto c : s1)
cout << c << endl;
//that equals to
cout << "method b" << endl;
for (int i = 0; i < s1.size(); ++i)
cout << s1[i] << endl; // 通过下标索引
system("pause");
return 0;
}
程序输出结果
method a
s
o
m
e
s
t
r
i
n
g
method b
s
o
m
e
s
t
r
i
n
g
请按任意键继续. . .
- 统计string对象中标点符号的个数
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1 = "hello, world!!!";
decltype(s1.size()) count = 0;
for (auto c : s1)
if (ispunct(c))
++count;
cout << s1 + "中共有"
<<count
<<"个标点符号" << endl;
system("pause");
return 0;
}
程序输出结果
hello, world!!!中共有4个标点符号
请按任意键继续. . .
当然还可以实现其他很多功能,就不一一列举。
C++标准库string的更多相关文章
- C++标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string类型的目的就是满足对字符串的一般应用. 本文地址:http://www.cn ...
- C++标准库<string>简单总结
C++标准库<string>简单总结 在C++中,如果需要对字符串进行处理,那么它自带的标准库<string>无疑是最好的选择,它实现了很多常用的字符处理函数. 要想使用标准C ...
- c/c++ 标准库 string
c/c++ 标准库 string 标准库 string的小例子 test1~test10 #include <iostream> using namespace std; int main ...
- 实现C++标准库string类的简单版本
代码如下: #ifndef STRING_H #define STRING_H #include <cassert> #include <utility> #include & ...
- C 标准库 - string.h
C 标准库 - string.h This header file defines several functions to manipulate C strings and arrays. stri ...
- 标准库string与C风格字符串
返回字符串的长度 string标准库 #include<iostream> #include<cstring> using namespace std; int main() ...
- 【C++ Primer每日刷】之三 标准库 string 类型
标准库 string 类型 string 类型支持长度可变的字符串.C++ 标准库将负责管理与存储字符相关的内存,以及提供各种实用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与 ...
- 把《c++ primer》读薄(3-1 标准库string类型初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...
- C++ 标准库string字符串的截取
标准库的string有一个substr函数用来截取子字符串.一般使用时传入两个参数,第一个是开始的坐标(第一个字符是0),第二个是截取的长度. #include <iostream> #i ...
随机推荐
- java中String与StringBuffer拼接的区别
学习笔记: 1.String拼接会创建一个新的String对象,存储拼接后的字符串: StringBuffer拼接是直接在本身拼接,会即时刷新. 2.String只能拼接String类型的字符串: S ...
- 如何设计相对安全的cookie自动登录系统
很多网站登录的时候,都会有一个"记住我"功能,用户可以在限定时间段内免登录, 比如豆瓣.人人.新浪微博等都有这种设计.这种技术其实就是基于 cookie的自动登录, 用户登录的时候 ...
- eclipse中Build Path 导入的包和复制到 lib 包的区别
Java Build Path是我们编译需要的包,在比如在import ***.***.***时如果没用Java Build Path导入包的话类里面就有红叉,说不识别这个类,build path只是 ...
- [leetcode-553-Optimal Division]
Given a list of positive integers, the adjacent integers will perform the float division. For exampl ...
- java底层学习---1
JRE: Java Runtime EnvironmentJDK:Java Development Kit JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库.是使用java语 ...
- Gitlab维护记录
目前互联网公司主流的代码仓库统是gitlab,类似github的实现,维护gitlab已经有两年多的时间, 下面说一下维护过程中的注意点,以及如何维护更好. 分别是搭建,首先得搭建起来,不然怎么玩,其 ...
- Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序
前言:暑期应该开始了,因为小区对面的小学这两天早上都没有像以往那样一到七八点钟就人声喧闹.车水马龙. 前两篇文章介绍了Collection框架的主要接口和常用类,例如List.Set.Queue,和A ...
- 优化js脚本设计,防止浏览器假死
在Web开发的时候经常会遇到浏览器不响应事件进入假死状态,甚至弹出"脚本运行时间过长"的提示框,如果出现这种情况说明你的脚本已经失控了,必须进行优化. 为什么会出现这种情况呢,我们 ...
- 全网首创ISE入门级教程
转眼间我已经大三了,现在成为了实验室的负责人,对于下一届学生的纳新重任就交到了我的手上,想采取不同的方法暑假尽可能对他们进行一些培训,所以制作了此教程,说实话,在网上还没有找到关于ISE的入门级使用教 ...