C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能。我们将学习 C++ 标准库中的这个类,现在让我们先来看看下面这个实例:
现在您可能还无法透彻地理解这个实例,因为到目前为止我们还没有讨论类和对象。所以现在您可以只是粗略地看下这个实例,等理解了面向对象的概念之后再回头来理解这个实例。
实例
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 = "Hello";
string str2 = "World";
string str3;
int len ;
// 复制 str1 到 str3 str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
str3 : Hello
str1 + str2 : HelloWorld
str3.size() : 10
string类提供了一系列针对字符串的操作,比如:
- 1. append() -- 在字符串的末尾添加字符
- 2. find() -- 在字符串中查找字符串
- 4. insert() -- 插入字符
- 5. length() -- 返回字符串的长度
- 6. replace() -- 替换字符串
- 7. substr() -- 返回某个子字符串
- 8. ...
实例:
#include <iostream>
#include <string>
using namespace std;
int main()
{
//定义一个string类对象
string http = "www.runoob.com";
//打印字符串长度
cout<<http.length()<<endl;
//拼接
http.append("/C++");
cout<<http<<endl; //打印结果为:www.runoob.com/C++
//删除
int pos = http.find("/C++"); //查找"C++"在字符串中的位置
cout<<pos<<endl;
http.replace(pos, 4, ""); //从位置pos开始,之后的4个字符替换为空,即删除
cout<<http<<endl;
//找子串runoob
int first = http.find_first_of("."); //从头开始寻找字符'.'的位置
int last = http.find_last_of("."); //从尾开始寻找字符'.'的位置
cout<<http.substr(first+1, last-first-1)<<endl; //提取"runoob"子串并打印
return 0;
}
C++ 中输入的方式其实还有很多,下面来介绍一种与 C 语言中 getchar() 类似的。
cin.getline();
cin.getline() 是在输入一段字符完成后开始读取数据(注意,是输入完成后,以Enter为结束标志)
下面是一实例:输入一串字符,编程统计其中的数字个数和英文字母个数。输入的字符以 # 为结束标志。
#include<iostream>
using namespace std;
#define N 100
int main()
{
char X[N];
cin.getline(X,N); //以cin.getline形式输入
int a=0,b=0;
for(int i=0;i<N;i++)
{
if(X[i]=='#') //为#为结束标志
break;
if(X[i]>='0'&&X[i]<='9')
a++; //统计数字个数
if((X[i]>='a'&&X[i]<='z')||(X[i]>='A'&&X[i]<='Z'))
b++; //统计英文字母个数
}
cout<<a<<endl<<b<<endl;
return 0;
}