C++ 标准库类型 String

表示可变长的字符序列。

基础使用

1.必须包含头文件string

2.(可选)using声明——声明后在代码中可以直接使用string,否则需使用std::string,以便编译器能够从std命名空间中找到string.

#include <string>
using std::string

3.初始化(默认初始化 or 显式初始化)

//default initialization-------空字符串
string s1;

//direct initialization-------不使用等号
string s2(s1);
string s3("value");
string s4(10, 'c');  

//copy initialization--------使用等号
string s5 = s1;
string s6 = "value";
string s7 = string(10, 'c')


//其中s2-s4与s5-s7对应的初始化结果相同
//"value"叫做字符串字面值,可用于初始化string

4.对string对象的基本操作

//写入到输出流os
os<<s;
//从输入流is中读取
is>>s;
//读取一行,且保留输入时的空白符
getline(is, s);
//判断是否为空,返回布尔值
s.empty();
//返回string中字符的个数,其返回值类型是string::size_t;无符号整型数,切忌混用无符号与有符号数
s.size();
//返回第n个字符的引用,n属于0到s.size()-1
s[n];
//字符串相连,返回相连结果
s1 + s2;
//字符串比较,大小写敏感,返回布尔值
s1 == s2; 
s1 != s2;
 //按照字符字典顺序
s1 <= s2;
s1 >= s2;
s1 < s2;
s1 > s2;

读取string对象

1.使用IO操作,可连续读入。

#include <iostream>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::endl;

//使用cin读入,再使用cout读出
//忽略开头空白,遇到下一个空白停止
//读取结果不会包含空白

int main(){
  string s;
  cin >> s;
  cout << s << endl;

  string s2, s3;
  cin >> s2 >> s3;
  cout << s2 << s3 <<endl;
}

输出结果:

A. 省略掉了开头的一长串空白

B. 遇到空白即停止读入

C. 我们可以发现我们只输入了一次,由此可知:

     在读入s时,第一次遇到Hello后的空白就停下了,但是剩余内容还留在输入流中。

     读取s2, s3时,直接读取了剩余在输入流中的字符串。

     读取s2,遇到World后面的空格再次停止读入,开始读取s3。

     读取s3,遇到!后的空格再次停止读入。

 2. 使用getline读取一整行

     读取内容,知道遇到换行符。

     将会保留输入时的空白符。换行符将被读入,但不会被存储到string对象中。

#include <iostream>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::endl;

int main(){
  string line;
  while(getline(cin, line))
     cout << line << endl;
}

输出结果:

    保留了所有空白符。

字符串字面值和string对象相加

必须确保每个加法运算符(+)的两侧运算对象至少有一个string

正确:string s1 = s + "," + "world";

错误:string s2 = "hello" + "," + s; 

原因:左结合律

头文件<cctype>

包含大小写转换以及判断等问题的函数声明

1. isalpha() 用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
2. isalnum() 用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于a~z||A~Z||0~9。
3. islower() 用来判断一个字符是否为小写字母,也就是是否属于a~z。
4. isupper()用来判断一个字符是否为大写字母。
5. tolower() 函数是把字符串都转化为小写字母。
6. toupper() 函数是把字符串都转化为大写字母。

练习题

 1. 编写一段程序从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词。

#include <iostream>
#include <math.h>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::endl;

int main() {

    //读取一整行
    string line;
    getline(cin, line);
    cout << line << endl;

    //一个单词一个单词得读取
    string word;
    while(cin >> word){
        cout << word << endl;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值